我见过以下技巧可以快速创建较大的空文件:
dd if=/dev/zero of=test.dat bs=1024 count=1024
但是,创建多 GB 文件时,这仍然需要一些时间。我推测这段时间主要用来将\0
s 从写入/dev/zero
到 的所有文件test.dat
。
有没有什么方法可以“立即”创建任意大小的文件,而无需实际将其内容初始化为任何东西?
答案1
是的,如果你的文件系统支持稀疏文件。
您的dd
方法实际上创建了文件并填充创建的文件包含零。实际上必须写入这些零,这需要时间。
如果您在文件中“跳过”而不写入,您仍会创建一个看似很大的文件,而实际上并没有写入文件。由于这个大文件实际上不占用磁盘空间,因此甚至可以创建比其所在的 FS 允许的更大的文件。
如果你想尝试一下,可以使用类似这样的方法
dd seek=123456 if=/dev/null of=sparse-file bs=1M
(使用不了解稀疏文件的软件进行备份和恢复时要小心)。