任意のデータでファイルを埋める方法は?

任意のデータでファイルを埋める方法は?

新しいファイルを作成して1GBのランダムデータで埋めるにはどうすればよいですか?一部のソフトウェアをテストするにはこれが必要です。

私はまたは/dev/randomを使用することを好みます/dev/urandom

答え1

ほとんどのシングルマシンでは:

head -c 1G </dev/urandom >myfile

サフィックスがheadわからない場合は、バイトサイズを指定できます。G

head -c 1073741824 </dev/urandom >myfile

headこのオプションがわからない場合(-c一般的ですがPOSIXではありません。おそらくOpenBSDを使用しているでしょう):

dd bs=1024 count=1048576 </dev/urandom >myfile

/dev/randomLinuxでは使用しないでください/dev/urandom

答え2

疑似乱数データが​​十分であると仮定するdd if=/dev/urandom of=target-file bs=1M count=1000と、必要に応じて機能します。

仕事(1)データブロックは入力ファイルから読み取られ、出力ファイルに書き込まれます。コマンドライン言語は少し珍しいですが、基本を理解する価値がある本当に便利なツールの1つです。

この場合ifは入力ファイル、ofは出力ファイル、bsは「ブロックサイズ」です。私はサイズを簡単に設定するためにGNU拡張を使用します。 (ddGNU拡張がない場合は1048576を使用することもできます。)は読み書き可能なブロック数ですcountifof

/dev/urandom/dev/randomLinuxでは、実際のランダムデータが使い果たされると、ブロックの代わりに強力な擬似ランダムデータに戻るため、より良い選択です。

また、見たいと思うかもしれませんhttp://www.random.org/直接生成せずに任意のデータを取得する別の方法です。

答え3

/dev/random//dev/urandom優れた代替用途および/または使用暗号化方式で安全擬似乱数ジェネレータ(CSPRNG) opensslによって提供されます。まれに、必要に応じてアルゴリズムと暗号化方法を選択することもできます。

size=$( echo 1G | numfmt --from=iec )         # 1 G ==> 1073741824

openssl rand -out myfile "$size"

Base64が必要な場合:

openssl rand -base64 -out myfile "$size"

詳細を読んでくださいman rand

答え4

このソリューションはランダムを使用しませんが、マニュアルページを使用して大量のデータを生成します。ただし、これは最大サイズを保証しないため、cat必要なサイズを得るために数秒間繰り返す必要があります。

man curl > /tmp/man-curl

または、より大きなサイズが必要な場合は、

for i in {1..10}; do man curl >> /tmp/man-curl; done

関連情報