91
91
Linuxで1GBのランダムファイルを作成するにはどうしたらいいでしょうか?
bashシェルを使っているのですが、openssl rand -base64 1000
などのコマンドにdd
のアウトをパイプしたいと思っています。変数を使えばいいと思うのですが、どのようにすればいいのかよくわかりません。なぜ作成したいかというと、ランダムなテキストで1GBのファイルを作成したいからです。
bashシェルを使っているのですが、openssl rand -base64 1000
などのコマンドにdd
のアウトをパイプしたいと思っています。変数を使えばいいと思うのですが、どのようにすればいいのかよくわかりません。なぜ作成したいかというと、ランダムなテキストで1GBのファイルを作成したいからです。
if=
は必要ないので、代わりに何かを dd
にパイプしてもいいでしょう:
something... | dd of=sample.txt bs=1G count=1
とにかく openssl rand
はバイト数を指定する必要があるので、ここでは役に立たないでしょう。ですから、実際には dd
は必要ありません - これは次のように動作します:
openssl rand -out sample.txt -base64 $(( 2**30 * 3/4 ))
1 ギガバイトは通常 230 バイトです (代わりに 109 バイトのために 10**9
を使うこともできますが)。* 3/4
の部分は Base64 のオーバーヘッドを考慮しており、encoded 出力を 1 GB にしています。
もし、正確に1GBにしたい場合は、次のようにします:
openssl rand -out $testfile -base64 792917038; truncate -s-1 $testfile
opensslコマンドは、ファイルを正確に1バイトの大きさにします。truncate コマンドはそのバイトを切り捨てます。
#!/bin/bash
openssl rand -base64 1000 | dd of=sample.txt bs=1G count=1
このスクリプトは、/dev/random
を使用しても構わないのであれば動作するかもしれません。