Linuxでサイズ指定でダミーファイルを作成したい!
Linuxでダミーファイルを手っ取り早く作りたい時ありませんか?
私の場合は自分で作成したシェルスクリプトをテストする時に必要になりました。
しかしこのスクリプト、ファイルサイズによって分岐していましたので、
ダミーファイルのサイズを指定したかったんです。
そこで今回はファイルサイズを指定してダミーファイルを作成する方法をご紹介いたします!
- Linuxでサイズ指定でダミーファイルを作成したい!
- Linuxでサイズ指定でダミーファイルを作成するコマンド
- fallocateとddの比較 1Gのファイル作成完了時間
- fallocateとddの比較 5Gのファイル作成完了時間
Linuxでサイズ指定でダミーファイルを作成するコマンド
Linuxでサイズ指定してダミーファイルを作成する際は、fallocateコマンドを使います。
# fallocate -l 1G 1gig_f
書式
fallocate -l <サイズ> <ファイル名>
ddコマンドでも同様のことができますが、fallocateを使うことを推奨します。
ddはファイル作成完了までに時間がかかるためです。
ddコマンドはファイル作成の際に実際にゼロを書き込んで作成しているためファイル作成完了まで遅いです。
一方fallocateはディスク領域を予約しているだけで実際にはディスク書き込みは発生しないため素早く処理が完了します。
さらにddコマンドはオプションが覚えずらく、毎回使い方をグーグル先生に聞くというデメリットもあります。
fallocateとddの比較 1Gのファイル作成完了時間
試しに1Gのファイル作成で何秒かかるかtimeコマンドで測定してみました。
fallocateの完了時間
まずはfallocate。一瞬で終わりました。
# time fallocate -l 1G 1gig_f real 0m0.003s user 0m0.000s sys 0m0.001s
ddの完了時間
次にdd。
18秒かかりました。やはり遅いです。
# time dd if=/dev/zero of=01GBfile bs=1024 count=$((1024 * 1024)) 1048576+0 records in 1048576+0 records out 1073741824 bytes (1.1 GB) copied, 18.5482 s, 57.9 MB/s real 0m18.567s user 0m0.153s sys 0m3.162s
fallocateとddの比較 5Gのファイル作成完了時間
次はさらに5Gのファイル作成で試してみました。
fallocateの完了時間
まずはfallocate。作成時間が1Gの時とほとんど変わりません。
ディスクサイズを予約しているだけなので、サイズが増えても時間は変わらないわけですね。
# time fallocate -l 5G 5gig_f real 0m0.011s user 0m0.001s sys 0m0.006s
ddの完了時間
次に。dd
2分8秒かかりました。おそーい。
実際にディスクに書き込んでいるため、
作成するファイルのサイズが大きくなればそれに比例して作成時間もかかります。
# time dd if=/dev/zero of=10GBfile bs=1024 count=$((1024 * 1024* 5)) 5242880+0 records in 5242880+0 records out 5368709120 bytes (5.4 GB) copied, 128.645 s, 41.7 MB/s real 2m8.648s user 0m0.778s sys 0m15.276s
参考:
http://ram.kossboss.com/dd-fallocate-truncate-making-big-files-quick/ Quickly create a large file on a Linux system? - Stack Overflow