【Linux】ダミーファイルを任意のサイズで作成する

スポンサーリンク
このブログではアフィリエイト広告を利用しています。

SE仕事をしているとテストでダミーファイルが必要なことがよくあります。

Linuxでのダミーファイルを作成する方法を紹介します。

スポンサーリンク

Linuxでダミーファイル作成

Linuxでのダミーファイルですが、ここでは大きく分けて2パターンに分類して作成方法を紹介します。

パターンの分類としてはファイルの中身のデータの状態がどうなっているかです。

  1. 中身が全て「0」で埋め尽くされている(ゼロデータ)
  2. 中身がランダムな数字列や文字列となっている(ランダムデータ)

ゼロデータのダミーファイルを作成する

ゼロデータのダミーファイルに関しても、2パターンに分けられます。

  1. ディスク上のブロックとしてだけ確保する
  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パターンに分けられます。

  1. テキストデータ
  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}」をつけ忘れないようにしてください。

コメント