快速创建 Linux 文件

快速创建 Linux 文件

我想在 ext4 文件系统中创建一个空文件(可能不是零文件)。我可以使用以下命令执行此操作:

dd if=/dev/zero of=file count=xxxx

但如果 x 约为 0.5T,则需要一段时间。我想有一种方法可以快速创建这样的文件。它可能包含乱码,但没关系。

答案1

您可以创建一个稀疏文件,但可能不会得到您想要的结果,具体取决于您这样做的原因:

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 块大小做过一些基准测试的人。

答案2

稀疏文件就够了吗?

% 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

答案3

使用:

truncate -s 500G filename

这是真的如果您的文件系统支持稀疏文件,则速度会很快。

文件内容始终清零。Linux 不允许在未清零的情况下重复使用磁盘扇区,因为这存在安全风险。对于稀疏文件,只有在首次写入时才会分配扇区。

相关内容