Linux/Macで好きな容量のファイルを作成する

はじめに

一定の容量のあるただのファイルを作成したいことがたまにある。例えばwordpressのupload容量を変更した際の動作テストを行ったりとかが一例。linuxのみならずmacでもddコマンドで簡単に作成することができるのでその方法を紹介。

ddコマンド

linuxもmacも共通の手順はこちら(macで実施した際のログ)

$ dd if=/dev/zero of=~/80M bs=1 count=83886080
83886080+0 records in
83886080+0 records out
83886080 bytes transferred in 189.533890 secs (442591 bytes/sec)
$

80Mの空ファイルが作成される。中身は/dev/zeroなので、からっぽ。

上記例ではcountはバイト単位になる。

 * 1024 * 1024 * 80 = 83886080
で80MByteという計算。

ただし、189.533890 secs とあるように、3分以上かかっている。

これは1回に読み書きするブロックサイズ(bsオプション)が1になっているため。

この値を1 -> 1024に変更すれば理論上は1024倍高速になる。

bsを1 -> 1024に変えてみた

$ dd if=/dev/zero of=~/80M_1024 bs=1024 count=81920
81920+0 records in
81920+0 records out
83886080 bytes transferred in 0.375389 secs (223464489 bytes/sec)
$ 

作成されたファイルは同じく80Mだが、0.375389 secsで完了した。

bsが1の時と、1024の結果を比較した結果、504倍高速になったが、理論上の1024倍には届かなかった(残念だがそうゆうもんだ。。)。

意外と知られていないddの使い方

実はddで送った結果を直接他のサーバに送りつけることもできる。

dd if=/dev/sda | ssh root@転送先サーバ " dd of=/転送先ディレクトリ/server.sda.img"

DISKの中身を強制的にddコマンドで吸い上げ、他のサーバにイメージとして保存することもできる。今はDocker含むコンテナ全盛期の時代だが、KVMなどを使えば、吸い上げたイメージを元に仮想サーバとして動かすこともできる。

参考記事

https://qiita.com/S-T/items/8de3c150c7097bd021fa