検証用にサイズの大きいファイルがほしいなーと思うことが割とよくあるのでメモ。
touch コマンドだと空のファイルですからね。
# touch aaa
# ll aaa
-rw-r--r--. 1 root root 0 6月 20 04:59 2015 aaa
良く知られているのは dd コマンドで作成する方法です。
50MB のファイルを作成してみます。
# dd if=/dev/zero of=aaa bs=1M count=50
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 1.00053 s, 52.4 MB/s
これは /dev/zero のデータを aaa ファイルに 1度に 1MB ずつ 50回書きこむ (計 50MB)という意味になります。
出来たファイルを見てみます。
(ここでは -h オプションを使用してMB表記にしています)
# ll -h aaa
-rw-r--r--. 1 root root 50M 6月 20 05:21 2015 aaa
サイズが50MBのファイルが作成できました。めでたし、めでたし。
ここからは余談ですが、Byte 表記だと以下のようになります。
# ll aaa
-rw-r--r--. 1 root root 52428800 6月 20 05:48 2015 aaa
dd コマンドを実行した際も以下のように表記され、実際は52.4MBのファイルが作成されています。
52428800 bytes (52 MB) copied, 1.00053 s, 52.4 MB/s
これは dd コマンドの bs オプションで1Mと指定しており、1MB=1,048,576B だからです。
人間は10進数を使用しているので、1MB=1,000,000Byte なんですが、PCは2進数を使用しているため、1MB=1,048,576Byte なのです。
従って、1,048,576 Byte x 50 = 52,428,800 Byte = 52.4 MB になります。
こんなん当たり前じゃんw と思われるかもしてませんが、私はもともと情報系出身ではなく触れる機会がなかったため、最近までよく分かっていませんでした。
さらに余談ですが ll -h ( ls -lh ) コマンドで確認した 際に 50M と表記されていたのは、-h オプションを使用しているからです。
man ページの引用を貼っておきます。
-h, --human-readable
それぞれのサイズについて、 例えばメガバイトなら M といったサイズ文字を付加する。 10 の累乗ではなく 2 の累乗を用いるので、M は 1,048,576 バイトを表す。10 の累乗にしたいときは -H または --si
オプションを使うこと。