我想创建一个类似于/dev/null
or的特殊文件/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
答案3
如果您不需要在文件中查找,您可以使用命名管道:
mkfifo my_special_file
yes | head -n 100 > my_special_file&
cat my_special_file
当然,您可以使用任何其他命令(包括复杂的脚本)在管道中生成数据。
答案4
您还可以使用截断命令。例如:以下将创建一个 5MB 的文件。
truncate -s 5M 5.dumpfile