読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

ddコマンドで適当なビット列のファイルを生成する

unix

試験用に適当なビット列のデータを作りたい場合、ddコマンドが使えます。

使い方

$ dd if=/dev/random of=~/output bs=1024 count=1;
1+0 records in
1+0 records out
1024 bytes transferred in 0.000183 secs (5592405 bytes/sec)

bs × countで長さを決めます。
それなりの規模の書き込みをすれば、書き込み速度試験としても使えるそうです。

試しに中をみてみると

$ hexdump ~/output 
0000000 91 66 ee 32 a5 bb 82 52 b3 65 3a b3 f3 88 c3 ff
0000010 59 06 23 a1 ea 3c 60 8b 71 d5 4d 63 b8 a8 18 b4
0000020 2b 5c 81 bf 29 39 b1 7e eb 2e 71 1e 86 05 02 bc
0000030 e7 4b e0 f9 2b 77 02 5e fa 6d 71 a8 5f 54 82 00
 ...(snipping)...
00003e0 ab d3 a5 4e 98 f3 14 a6 90 0c b8 08 15 aa e9 c5
00003f0 7a 73 f2 d8 c7 95 a7 65 c8 4a 6b 76 f9 fb 15 70
0000400

また、sudo dd if=/dev/zero of=/dev/foobar でデータ抹殺 - Bye Bye Mooreで取り上げたように
参照先を/dev/zeroにした場合はちゃんとゼロ埋めになります。

$ dd if=/dev/zero of=~/output bs=1024 count=1;
1+0 records in
1+0 records out
1024 bytes transferred in 0.000051 secs (20069941 bytes/sec)
$ hexdump ~/output 
0000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0000400

サイズを指定してあげたほうが早くなる…みたいですね。

$ dd if=/dev/zero of=~/output bs=1k count=1k;
1024+0 records in
1024+0 records out
1048576 bytes transferred in 0.002680 secs (391250468 bytes/sec)

$ dd if=/dev/zero of=~/output bs=1m count=1;
1+0 records in
1+0 records out
1048576 bytes transferred in 0.000863 secs (1214929975 bytes/sec)