こんにちは、さるまりんです。
プログラムをテストするときにダミーのファイルが必要になることがあります。
なんでもいいので1ギガバイトのファイルが欲しい。
こんな時、Linux/macOSではdd
コマンドを使ってファイルを作ります。
ddコマンドで作成
dd if=/dev/zero of=test.dat bs=1M count=1024
if
で入力ファイルを指定します。それを/dev/zero
にすることで0
で埋められたデータを生成します。
of
は出力ファイルです。test.dat
を指定しています。
bs=1M
はブロックサイズを1メガバイトにし
count=1024
で上の1メガバイトのブロックを1024個書き込んで1ギガバイトのファイルを作成します。
macOSのターミナルで実施してみました。
% dd if=/dev/zero of=test.dat bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 1.024666 secs (1047894459 bytes/sec)
% ls -l
total 2117632
-rw-r--r-- 1 salu staff 1073741824 8 14 16:44 test.dat
% ls -lh
total 2117632
-rw-r--r-- 1 salu staff 1.0G 8 14 16:44 test.dat
1ギガになっていますね。
1ギガのブロックを1個書き込むでも1ギガバイトのファイルを作成できます。
% dd if=/dev/zero of=test.dat bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes transferred in 1.374243 secs (781333304 bytes/sec)
% ls -lh
total 2097152
-rw-r--r-- 1 salu staff 1.0G 8 14 16:45 test.dat
100メガバイトのファイルも作成してみます。
% dd if=/dev/zero of=test.dat bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 0.095899 secs (1093417033 bytes/sec)
% ls -lh
total 231424
-rw-r--r-- 1 salu staff 100M 8 14 16:46 test.dat
100メガでファイルが作成されています。
その他の方法
dd
コマンド以外にも作成方法があります。
fallocate
コマンド :
fallocate -l 1G test.dat
Linux(aws)上で実施してみました。
$ fallocate -l 1G test.dat
$ ls -lh
...
-rw-rw-r-- 1 ec2-user ec2-user 1.0G 8月 14 16:55 test.dat
truncate
コマンド :
truncate -s 1G test.dat
こちらもLinux(aws)上で実施してみました。
$ truncate -s 1G test.dat
[ec2-user@ip-172-31-5-91 work]$ ls -lh
...
-rw-rw-r-- 1 ec2-user ec2-user 1.0G 8月 14 16:56 test.dat
どれが早く動作するでしょう。インストールされているコマンド、環境に応じて使い分けてみます。
読んでくださってありがとうございました。
それではまた!