我想在ext4文件系统中创build一个空的(可能不是零)文件。 我可以这样做:
dd if=/dev/zero of=file count=xxxx
但是,如果x在0.5T左右,需要一段时间。 我想有一种方法可以快速创build这样的文件。 它可能包含乱码没关系。
你可以创build一个稀疏文件,但可能没有你想要的结果,这取决于你为什么这样做:
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
问题是,如果一个程序不知道如何处理稀疏文件,你什么时候像复制文件,它会填充零。 例如,请参阅此前的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
最后,如果你确实想要放入零,如果你设置一个更高的bs,它可能会快一点,比如bs = 4096。 这里是一个链接 ,实际上做了一些与dd块大小的基准。
稀疏文件是否足够?
% dd if=/dev/zero of=sparsefile bs=1k seek=500M count=1 1+0 records in 1+0 records out 1024 bytes transferred in 0.000224 secs (4569114 bytes/sec) % ls -lh sparsefile -rw------- 1 james james 500G 3 Mar 13:30 sparsefile
使用:
truncate -s 500G filename
如果你的文件系统支持稀疏文件,那真的很快。
文件内容始终为零。 Linux将不允许您重新使用磁盘扇区而不进行调零,因为这存在安全风险。 对于稀疏文件,只有在第一次写入扇区时才会分配扇区。