我想在 ext4 文件系统中创建一个空(可能不会归零)文件。我可以这样做:
dd if=/dev/zero of=file count=xxxx
Run Code Online (Sandbox Code Playgroud)
但是如果 x 在 0.5T 左右,则需要一段时间。我想有一种方法可以快速创建这样的文件。它可能包含胡言乱语没关系。
您可以创建一个稀疏文件,但可能没有您想要的结果,具体取决于您这样做的原因:
dd if=/dev/zero of=sparse_file bs=1 count=1 seek=512M
ls -l sparse_file
-rw-rw-r-- 1 kbrandt kbrandt 536870913 2010-03-03 08:30 sparse_file
Run Code Online (Sandbox Code Playgroud)
问题是,如果一个程序不知道如何处理稀疏文件,你什么时候复制文件之类的东西,它会用零填充它。例如,请参阅之前的 serverfault 帖子。你也可以看到不同之处du:
[kbrandt@kbrandt-opadmin: /bigfiles] du sparse_file
12 sparse_file
[kbrandt@kbrandt-opadmin: /bigfiles] du sparse_file --apparent-size
524289 sparse_file
[kbrandt@kbrandt-opadmin: /bigfiles] #cat is not sparse aware, watch what happens
[kbrandt@kbrandt-opadmin: /bigfiles] cat sparse_file > sparse_file2
[kbrandt@kbrandt-opadmin: /bigfiles] du sparse_file2
524808 sparse_file2
Run Code Online (Sandbox Code Playgroud)
最后,如果您确实想实际输入零,如果您设置更高的 bs,它可能会更快一点,例如 bs=4096。这是一个链接,指向实际使用 dd 块大小进行一些基准测试的人。