それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

指定サイズのダミーファイルを容量指定して作る(win/linux/mac)

サイズ指定したファイルが欲しいことがあります。

たとえば200MBのファイルのファイルの転送時間を調べて欲しいや、コピー時間を調べたいなど。

ファイルサイズは数値で指定する。


windowsはfsutilを使う。

fsutil file createnew  dummy1GB.img 1073741824
fsutil file createnew  dummy200MB.img 209715200

ざっくりしたiB表記の場合こんな感じ

表記 サイズ
1GB 1073741824 expr 1024 \* 1024 \* 1024
200MB 209715200 expr 1024 \* 1024 \* 200

LinuxはMac OSXは dd を使うのが手早い

Linuxのdd とosx homebrewの gun dd はファイルサイズ指定の bs に1Mとか使えるので便利。

takuya@air:~/Desktop$ dd if=/dev/zero of=dummy200MB.img bs=1MiB  count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 0.857194 s, 245 MB/s

dd は便利ですね。

bs=1MB とか bs=1MiBと指定できるから便利です。

Mac OSX 標準のBSD dd はbs指定が違う

bs = 1MB が使えない、古きよき、ddなので expr を使いましょう

takuya@air:~/Desktop$ dd if=/dev/zero of=dummy200MB.img bs=$(expr 1024 \* 1024)  count=200
200+0 records in
200+0 records out
200000000 bytes (200 MB) copied, 1.13786 s, 176 MB/s

おまけ 1MiBと1MB

bs=1MiBで指定した場合

これは 1MiB=1024*1024 として計算される

takuya@air:~/Desktop$ ls -lh *.img
-rw-r--r-- 1 takuya staff 200M 12 24 14:58 dummy200MB.img
takuya@air:~/Desktop$ ls -l *.img
-rw-r--r-- 1 takuya staff 209715200 12 24 14:58 dummy200MB.img
bs=1MBで指定した場合

ここれは 1MB=1000*1000 で計算される。

takuya@air:~/Desktop$ ls -l *.img
-rw-r--r-- 1 takuya staff 200000000 12 24 15:00 dummy200MB.img
takuya@air:~/Desktop$ ls -lh *.img
-rw-r--r-- 1 takuya staff 191M 12 24 15:00 dummy200MB.img

ま、Mがミリオンを示すメガだから当たり前といえば当たり前。でも慌ててると忘れそうになる。