Ubuntuでサイズを指定してバイナリとテキストでダミーファイルを作成する方法です。
テストでダミーファイルが必要になった時に役立ちます。
ddコマンドでバイナリのダミーファイルを作成
ddコマンドを使用して、以下の2パターンのダミーファイルを作成する方法を紹介します。
- 中身がランダムなデータ
- 中身が「0」で埋められているデータ
ランダムなデータでファイルを作成
中身がランダムなデータのダミーファイルは下記の方法で作成します。
「if=/dev/urandom」で「/dev/urandom」からランダムなデータを出力し、作成するファイルのサイズは、「bs=ブロックサイズ」*「count=ブロック数」で指定しています。
dd if=/dev/urandom of=ファイル名 bs=ブロックサイズ count=ブロック数
ブロックサイズの単位例です。
- K = 1024 バイト
- M = 1024 * 1024 バイト
- G = 1024 * 1024 * 1024 バイト
- KB = 1000 バイト
- MB = 1000 * 1000 バイト
- GB = 1000 * 1000 * 1000 バイト
下記のコマンドで、中身がランダムなデータでファイルサイズが100Mのファイルを「100M_URANDOM」という名前で作成することが出来ます。
ブロックサイズを1M、ブロック数を100と指定することで作成するファイルのサイズを「100M」と指定していますので、作成するファイルのサイズを変更したい場合はこの部分を適宜変更してください。
$ dd if=/dev/urandom of=100M_URANDOM bs=1M count=100 100+0 records in 100+0 records out 104857600 bytes (105 MB, 100 MiB) copied, 0.448958 s, 234 MB/s
作成されたファイルのサイズを確認すると「100M」であると表示されています。
$ ls -lh 100M_URANDOM -rw-rw-r-- 1 tamohiko tamohiko 100M 2月 13 22:22 100M_URANDOM
「file」コマンドでファイルの種類を確認すると、「data」であると表示されます。
$ file 100MB_URANDOM 100MB_URANDOM: data
「od」コマンドでファイルの中身を表示すると、下記の様にランダムなデータであることが確認できます。
$ od -x 100MB_URANDOM | head -n 3 0000000 95db 95ef 9adf 22ee fb45 3c0d 40ab cff6 0000020 f1e2 98f8 16ba 5801 949a bf84 c3ee 231b 0000040 b2be 3344 0ba6 1ae1 fa26 08c8 22f9 5486
0で埋められたファイルを作成
中身が「0」で埋められているファイル作成するには、下記のコマンドを使用します。
「/dev/zero」は「0」(0x00)を出力し続ける機能を持っているので、この機能を使用して中身が「0」で埋められているファイルを作成しています。
dd if=/dev/zero of=ファイル名 bs=ブロックサイズ count=ブロック数
下記のコマンドで、ファイルのサイズが100Mの「100M_ZERO」という名前のファイルを作成することが出来ます。
$ dd if=/dev/zero of=100M_ZERO bs=1M count=100 100+0 records in 100+0 records out 104857600 bytes (105 MB, 100 MiB) copied, 0.0779801 s, 1.3 GB/s
作成されたファイルのサイズが「100M」であることが確認できました。
$ ls -lh 100M_ZERO -rw-rw-r-- 1 tamohiko tamohiko 100M 2月 13 22:42 100M_ZERO
ファイルの種類も「data」であることが確認できます。
$ file 100M_ZERO 100M_ZERO: data
ファイルの中身を「od」コマンドで表示してみると、「0」で埋められていることが確認できます。
$ od -x 100MB_ZERO 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 620000000
サイズを指定してテキストデータを作成
「/dev/urandom」を使って、ランダムな内容のテキストデータを作成する方法を紹介します。
仕組みとしては、「/dev/urandom」で出力される内容を「base64」でテキストデータに変換し、「head」でサイズの指定を行ってからファイルにリダイレクトしてテキストファイルを作成しています。
base64 /dev/urandom | head -c サイズ > ファイル名
「head」でサイズを指定を行ってから「/dev/urandom」からデータを出力し、それを「base64」でテキストデータに変換した後に、ファイルへとリダイレクトして作成するという方法も有ります。
head -c サイズ /dev/urandom | base64 > ファイル名
サイズの指定で使用できる単位の例です。
- K = 1024 バイト
- M = 1024 * 1024 バイト
- G = 1024 * 1024 * 1024 バイト
- KB = 1000 バイト
- MB = 1000 * 1000 バイト
- GB = 1000 * 1000 * 1000 バイト
10Mサイズの「10MB_URANDOM.txt」という、テキストファイルを作成してみます。
$ base64 /dev/urandom | head -c 10M > 10MB_URANDOM.txt
サイズを確認すると指定した10Mで作成されています。
$ ls -lh 10MB_URANDOM.txt -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 13 16:54 10MB_URANDOM.txt
ファイルの種類を確認すると「ASCII text」であることが確認できました。
$ file 10MB_URANDOM.txt 10MB_URANDOM.txt: ASCII text
実際にファイルの中身を最初の3行分表示させて見ると、ランダム内容が表示されました。
$ head -n 3 10MB_URANDOM.txt TNAwET54KSjVtv7D4YYCEqF8ESM+HRUSAeQHtScwAUAo/PbnpQYCfhhUP8iP2+nRx4F69zRve7u5 ZY3QiOU9/xjrx46PxP6utcef7HlMDhbEDxYhhKTdwkO/mxz5k6oTi3nTKpCXUoPrHqv4yrB5cBWM hLqGODi/8YBgfaZCo31tRriEZksocNdzPj6NcIMiq0bm+OFHZc/FjWFPXpY8TSSY3pCYm3jrMOxD
大量にダミーファイルを作成したい場合
一度に多くのダミーファイルを作成したい場合は、for文を使用することでファイルを大量に作成することが出来ます。
バイナリデータの作成
下記の例では「/dev/urandom」を使用してランダムなデータでファイルを作成していますが、「/dev/zero」を使用することも出来ます。
for i in {最初の数..最後の数} ; do dd if=/dev/urandom of=ファイル名${i} bs=ブロックサイズ count=ブロック数 : done
「/dev/urandom」を使ってサイズが1Mのファイルを5個作成します。
$ for i in {01..05} ; do dd if=/dev/urandom of=random_file_${i} bs=1M count=10 ; done
下記の10Mサイズのファイルが5個作成されました。
$ ls -lh random_file* -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:05 random_file_01 -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:05 random_file_02 -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:05 random_file_03 -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:05 random_file_04 -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:05 random_file_05
次は「/dev/zero」を使ってサイズが10Mのファイルを5個作成します。
$ for i in {01..05} ; do dd if=/dev/zero of=zero_file_${i} bs=1M count=10 ; done
サイズが10Mのファイルが5個作成されました。
$ ls -lh zero_file* -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:06 zero_file_01 -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:06 zero_file_02 -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:06 zero_file_03 -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:06 zero_file_04 -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:06 zero_file_05
テキストデータの作成
テキストデータも同様に作成することができます。
for i in {最初の数..最後の数} ; do base64 /dev/urandom | head -c サイズ > ファイル名${i}.txt ; done
サイズが10Mのテキストファイルを5個作成します。
$ for i in {01..05} ; do base64 /dev/urandom | head -c 10M > dummy_text_${i}.txt ; done
10Mのテキストファイルが5個作成できました。
$ ls -lh dummy_text_* -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:08 dummy_text_01.txt -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:08 dummy_text_02.txt -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:08 dummy_text_03.txt -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:08 dummy_text_04.txt -rw-rw-r-- 1 tamohiko tamohiko 10M 2月 14 14:08 dummy_text_05.txt
コメント