SE仕事をしているとテストでダミーファイルが必要なことがよくあります。
Linuxでのダミーファイルを作成する方法を紹介します。
Linuxでダミーファイル作成
Linuxでのダミーファイルですが、ここでは大きく分けて2パターンに分類して作成方法を紹介します。
パターンの分類としてはファイルの中身のデータの状態がどうなっているかです。
- 中身が全て「0」で埋め尽くされている(ゼロデータ)
- 中身がランダムな数字列や文字列となっている(ランダムデータ)
ゼロデータのダミーファイルを作成する
ゼロデータのダミーファイルに関しても、2パターンに分けられます。
- ディスク上のブロックとしてだけ確保する
- ディスクに実際に書き込んで確保する
ディスク上のブロックとしてだけ確保する
fallocateコマンドで任意のサイズでダミーファイルの作成が可能です。
以下のように実行してください。
fallocate -l [サイズ] [ファイル名]
[ファイル名]と[サイズ]には任意のものを指定してください。サイズの単位はバイトになります。
コマンド例)1MByteのファイルを作成
fallocate -l 1048576 testfile
コマンド例)1GByteのファイルを作成
fallocate -l 1073741824 testfile
作成した直後のファイルはディスク上のブロックとして確保されているだけのため、実際にこのファイルを読み込んでもディスクから読みだすわけではなく、ゼロデータを返すだけです。
そのため、そのままではディスクの読み出しテストには使えません。
ディスクに書き込んで確保する
ディスクの読み出し等に使用するのであれば、ddコマンドを使用することをおすすめします。
dd if=/dev/zero of=[ファイル名] bs=[ブロックサイズ] count=[個数]
[ファイル名]、[ブロックサイズ]、[個数]には任意のものを指定してください。オプションの意味は以下のようになります。
- bs=[ブロックサイズ] : 1度に[ブロックサイズ]バイトずつ読み込みと書き出しを実行する
- count=[個数] : [個数]回読み込みと書き出しを実行する
また、[ブロックサイズ]には以下のような単位が使用できます。
- K=1024
- M=1024*1024
- G=1024*1024*1024
- KB=1000
- MB=1000*1000
- GB=1000*1000*1000
コマンド例)1MByteのファイルを作成
dd if=/dev/zero of=testfile bs=1M count=1
コマンド例)1GByteのファイルを作成
dd if=/dev/zero of=testfile bs=1M count=1024
ゼロデータは、圧縮処理が入るととても小さなファイルとなってしまうため誤った結果になることがあるので注意してください。
ランダムデータのダミーファイルを作成する
ランダムデータのダミーファイルに関しても、2パターンに分けられます。
- テキストデータ
- バイナリデータ
テキストのランダムデータのダミーファイルを作成する
テキストのランダムデータを作成したい場合はbase64コマンドを利用します。
base64 /dev/urandom | head -c [サイズ] > [ファイル名]
サイズには以下のような単位が使用できます。
- b=512
- K=1024
- M=1024*1024
- KB=1000
- MB=1000*1000
コマンド例)1MByteのファイルを作成
base64 /dev/urandom | head -c 1M > testfile
コマンド例)1GByteのファイルを作成
base64 /dev/urandom | head -c 1024M > testfile
バイナリのランダムデータのダミーファイルを作成する
バイナリのランダムデータのダミーファイルの作成には、ddコマンドを使用します。ゼロデータとの違いはオプションが「if=/dev/zero」なのか「if=/dev/urandom」かの違いです。
dd if=/dev/urandom of=[ファイル名] bs=[ブロックサイズ] count=[個数]
[ファイル名]、[ブロックサイズ]、[個数]には任意のものを指定してください。ゼロデータのところでも記載していますが、オプションの意味は以下のようになります。
- bs=[ブロックサイズ] : 1度に[ブロックサイズ]バイトずつ読み込みと書き出しを実行する
- count=[個数] : [個数]回読み込みと書き出しを実行する
コマンド例)1MByteのファイルを作成
dd if=/dev/urandom of=testfile bs=1M count=1
コマンド例)1GByteのファイルを作成
dd if=/dev/urandom of=testfile bs=1M count=1024
大量のダミーファイルを作成する方法
ループ処理と組み合わせることで簡単に大量のダミーファイルを作成することが可能です。
Linuxのループ処理は以下のように書くことができます。
for [変数] in {[開始する数]..[終了する数]}; do [処理内容]; done
コマンド例)1MByteのゼロデータのファイルを1024個(1GByte分)作成
for i in {1..1024}; do fallocate -l 1048576 testfile${i}; done
コマンド例)1GByteのバイナリのランダムファイルを100個(100GByte分)作成
for i in {1..100}; do dd if=/dev/urandom of=testfile${i} bs=1M count=1024 ; done
作成されるファイルをそれぞれ別ファイルにするため、ファイル名に「${1}」をつけ忘れないようにしてください。
コメント