Linuxで任意サイズの評価用空ファイルを作成する方法

こんにちは。

ファイルのダウンロード速度を計測したりする際に、指定した容量のファイルが欲しくなるケースがあります。

今回はその方法を紹介したいと思います。

作成方法

ファイルの変換とコピーを行うddというコマンドで作成することができます。

例えば、50Mbyteのファイルを作成するには、以下のコマンドを実行します。

$ dd if=/dev/zero of=./test.img bs=1024 count=50000

※ /dev/zero はUnix系オペレーティングシステムにおけるスペシャルファイルの1つで、全てヌル文字の内容を読み出すことができる。

それぞれオプションの説明は下記の通りです。

  • if : 標準入力の変わりにファイルから読み込む。 
  • of : 標準出力の変わりにファイルに書き出す。
  • bs : バイトサイズを指定。デフォルトは512バイト。
  • count : bsで指定したサイズを繰り返す。

実践

実際にコマンドを叩いて確認してみましょう。

$ dd if=/dev/zero of=./test.img bs=1024 count=50000
50000+0 レコード入力
50000+0 レコード出力
51200000 バイト (51 MB) コピーされました、 0.0881463 秒、 581 MB/秒

出力されました。念のためサイズを確認します。

$ du -sk test.img
50000   test.img

50000KB(50MB) となっていて、正しく指定した容量で作成されていることが確認できました。

あとがき

以下のようなシェルスクリプトを書くと応用がききます。

これは1MBのファイルを1万個作るという内容になりますので、合計容量は10GBになります。

#!/bin/sh

for i in `seq 1 1 10000`;do
dd if=/dev/zero of=./1m-$i.img bs=1024 count=1000
done

今後もコマンドを利用した便利技を紹介できればと思います。

それでは、次の記事でお会いしましょう。

norikazum