ランダムに大きな「偽」ファイルを作成する

ランダムに大きな「偽」ファイルを作成する

/dev/nullファイルに似ているか、またはファイルが実際には存在しない特別なファイルを作成したいが、ファイルの/dev/random見かけ上のサイズに実際に制限があることを除いて、まだファイルから読み取ることができます。

つまり、特殊ファイルを作成し(上限を500GBに設定したと仮定)、ファイルを「cat」するとファイルの500GBがすべて出力されてから停止します。実際の500GBファイルと同じように機能する必要がありますが、スペースを占有しないでください。ファイルが何であるかは問題ではありません。おそらく、すべて\0似て/dev/nullいるか、送信され続ける小さな文字列などです。

これができることですか?私が見つけることができる唯一のものはマニュアルページで説明されていますが、mknodそれほど役に立ちません。

答え1

あなたは作ることができますスパースファイル一部のファイルシステムでは現れる特定のサイズに達しますが、実際にはそれほど多くのスペースを使用しません。ディスク上

$ dd if=/dev/null of=sparse bs=1024 count=1 seek=524288000
0+0 records in
0+0 records out
0 bytes (0 B) copied, 2.4444e-05 s, 0.0 kB/s
$ ls -l sparse 
-rw-rw-r--. 1 ignacio ignacio 536870912000 May  9 22:25 sparse
$ du -h sparse
0   sparse

答え2

すでに述べたポータブルdd / seekベースのソリューションに加えて、一部のUnixには専用のコマンドがあります。

少なくともソラリスMac OS Xそしてエリックス:

mkfile -n 500m sparseFile

HP-UXで事前割り当て、AIXの場合はlmktemp。多くのLinuxディストリビューションではカット

答え3

ファイルを表示する必要がない場合は、名前付きパイプを使用できます。

mkfifo my_special_file
yes | head -n 100 > my_special_file&
cat my_special_file

もちろん、複雑なスクリプトを含む他のコマンドを使用してパイプラインからデータを生成することもできます。

答え4

truncate コマンドを使用することもできます。例:以下は5MBファイルを生成します。

truncate -s 5M 5.dumpfile

関連情報