是否可以“立即”创建任意文件?

Chr*_*isB 6 unix dd

我已经看到以下技巧可以稍微快速地创建大的空文件:

dd if=/dev/zero of=test.dat bs=1024 count=1024
Run Code Online (Sandbox Code Playgroud)

但是,这在创建多 GB 文件时仍然需要一些时间。我认为这次是由磁盘将所有\0s 从写入/dev/zerotest.dat

有没有办法“立即”创建任意大小的文件,而无需实际将其内容初始化为任何内容?

Hen*_*nes 12

是的,如果您的文件系统支持稀疏文件

您的dd方法实际上创建文件并用零填充创建的文件。它实际上必须写入这些零,这需要时间。

如果您在文件中“跳过”而不写入,您仍然会创建一个看似大的文件,而不会实际写入文件。由于这个大文件实际上并不消耗磁盘空间,因此甚至可以创建大于其允许的 FS 的文件。

如果你想尝试这个,使用这样的东西
dd seek=123456 if=/dev/null of=sparse-file bs=1M

(注意使用不知道稀疏文件的软件进行备份和恢复)。