LinuxOSでサイズを指定したファイルを作成してみました。
dd コマンドを利用することで簡単に作成できます。
今回はディストリビューションとして ubuntu を利用しますが、基本的にすべてのディストリビューションで利用できます。
サイズを指定したファイルを作成する
ddコマンドを利用します。
インストール確認
# ddがインストールされているかの確認
dd --version
もし dd がインストールされていない場合にはインストールしてください。
ファイルの作成①:256バイトのファイル
256バイトのファイルを作成します。
# 256バイトのファイルを作成
dd if=/dev/zero of=test.txt bs=256 count=1
実行結果①
xxxxxxx@VM-test:~/test$ dd if=/dev/zero of=test.txt bs=256 count=1
1+0 レコード入力
1+0 レコード出力
256 bytes copied, 0.000221002 s, 1.2 MB/s
xxxxxxx@VM-test:~/test$ ls -l
合計 4
-rw-rw-r-- 1 xxxxxxx xxxxxxx 256 Feb 18 14:54 test.txt
ファイルの作成②:1Gバイトのファイル
次に1GBのファイルを作成します。
# 1G バイトのファイルを作成
dd if=/dev/zero of=output_file bs=1G count=1
実行結果②
xxxxxxx@VM-test:~/test$ dd if=/dev/zero of=test.txt bs=1G count=1
1+0 レコード入力
1+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 19.458 s, 55.2 MB/s
xxxxxxx@VM-test:~/test$ ls -lh
合計 976568
-rw-rw-r-- 1 xxxxxxx xxxxxxx 1.0G Feb 18 15:03 test.txt
少し時間がかかりますが1GBのファイルを作成できました。
[参考] オプションの解説
if は入力ファイルを指定します。
ここでは /dev/zero を指定し、ゼロバイトで埋められたデータを利用しています。
of は出力ファイル名を指定します。
bs はブロックサイズを指定します。
count はブロック数を指定します。
今回は 1 としていますが、例えばこれを 2 とすると bs の値が乗算されてファイルが作成されます。
xxxxxxx@VM-test:~/test$ dd if=/dev/zero of=test.txt bs=1M count=3
3+0 レコード入力
3+0 レコード出力
3145728 bytes (3.1 MB, 3.0 MiB) copied, 0.00310362 s, 1.0 GB/s
xxxxxxx@VM-test:~/test$ ls -lh
合計 3.0M
-rw-rw-r-- 1 xxxxxxx xxxxxxx 3.0M Feb 18 15:05 test.txt
[参考] /dev/zero とは?
/dev/zero はUNIXおよびLinuxシステムにおける特別なデバイスファイルの1つで、このファイルを読み取ると無限のゼロバイト (0x00
) が返されます。
catコマンドで中身を確認すると延々と処理され続けます。
cat /dev/zero
具体的な中身は以下のようになっています。
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 ...
ddコマンドはこの性質を利用して特定のバイト数のファイルを作成しています。