kazmax - Linux で自宅サーバー

中身がランダムなファイルを任意のサイズで作成する

中身がランダムなファイルを任意のサイズで作成します。/dev/urandomというファイルとheadコマンドを利用します。

コマンド一発で大きなファイルでも作成できるのでなかなか便利です。 例として、中身がランダムで、サイズを200Mbyteに指定したファイルを作成します。

Last Update : 2008年12月09日

中身がランダムなファイルを任意のサイズで作成する手順

  1. /dev/urandom について
  2. head コマンドについて
  3. 中身がランダムな200Mbyteのファイルを作成してみる

1. /dev/urandom について

/dev/urandomというファイルは、カーネル乱数ジェネレータへのインタフェースとしてシステムへ作成されています。 要は乱数を生成してくれるファイルです。単純にファイルとして存在しているので何かのコマンドで中身を出力するとランダムな値を出力してくれます。

memo

もし/dev/urandomファイルがOS上になかったら・・・
通常は/dev/urandomファイルは存在すると思うのですが、 もし無かったり、別ファイルとして作成したい場合は、以下のようにして作成する事ができます。

書式:

mknod -m 644 任意ファイル名 c 1 9

例:

# mknod -m 644 /dev/urandom c 1 9
# chown root:root /dev/urandom
# ls -l /dev/urandom
cr--r--r-- 1 root root 1, 9  3月 16  2008 /dev/urandom

上の/dev/urandomというファイル名を変更すれば、任意のファイル名で作成できます。

2. head コマンドについて

headコマンドは、ファイルの最初の部分を表示するコマンドです。 読み込み範囲を、byte 単位で指定できます。

書式

head -c BYTES FILE

オプション

BYTES 任意バイト数を指定する。’b’を追加すると任意バイト数の 512 倍、’k’は 1024 倍、’m’は 1048576 倍を指定したことになります。
FILE ファイル名

※ 他にもオプションは有ります。

# echo ABC > test.txt ← 中身がABCのファイルを作成
# head -c 1 test.txt ← test.txtから1byte出力
A
# head -c 2 test.txt ← test.txtから2byte出力
AB

3. 中身がランダムな200Mbyteのファイルを作成してみる

中身がランダムな200Mbyteのファイルを作成するには、単純に、 headコマンドで200Mbyteを指定して、 /dev/urandomを読み込むだけです。

# head -c 200m /dev/urandom > test.txt
# ls -lh test.txt
-rw-r--r-- 1 hoge hoge 200M 12月  9 16:15 test.txt ← サイズは200Mbyte

# head -c 100 test.txt
テト"ィ]bロェオョスJィサ
              ・メH,2ィhN「Xuトサア・8ロ
pロハL」]ヷ(イ・R`m/Iコノa2h|Yウ??・萋ラテ.ユ ← 中身はランダム