Files

創建一個任意大的“假”文件

  • January 29, 2022

我想創建一個類似於/dev/nullor的特殊文件/dev/random,其中該文件實際上並不存在,但您可以從中讀取相同的內容,除了我實際上可以對文件的表觀大小設置上限。

換句話說,我想創建一個特殊文件(假設我將上限設置為 500GB),當我“cat”該文件時,它將輸出所有 500GB 的文件,然後停止。它需要像實際的 500GB 文件一樣工作,但不佔用空間。這個文件的內容無關緊要,它可能都是\0’s like /dev/null,或者只是一個反復發送的小字元串,或者其他什麼。

這是可以做的嗎?我能找到的唯一遠端接近的是 man pages 談論mknod,但那些不是很有幫助。

您可以在某些文件系統上創建一個稀疏文件,該文件看起來有一定的大小,但實際上不會使用磁碟上的那麼多空間。

$ 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

除了已經提到的基於攜帶式 dd/seek 的解決方案之外,一些 Unix 具有專門的命令:

至少在SolarisMacOS/XIrix上:

mkfile -n 500m sparseFile

在 HP-UX prealloc上,在 AIX lmktemp 上。並且許多 Linux 發行版都截斷了

引用自:https://unix.stackexchange.com/questions/38292