PR

【Ubuntu】サイズを指定してダミーファイルを作成する方法

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

コメント

タイトルとURLをコピーしました