日: 2018年9月14日

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

    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