创建一个包含大量零字节的测试文件

创建一个包含大量零字节的测试文件

我知道如何创建一个空文件:

touch /var/tmp/nullbytes

但是如何使用 bash 在命令行上创建仅包含空字节的 1MB 文件?

答案1

使用 GNU truncate

truncate -s 1M nullbytes

(假设nullbytes事先不存在)将创建一个 1 MB 的稀疏文件。该文件看起来充满了零,但不占用任何磁盘空间。

如果没有truncate,您可以使用dd

dd bs=1048576 seek=1 of=nullbytes count=0

(对于某些dd实现,您可以将 1048576 替换为1M

如果您希望磁盘空间为已分配,在 Linux 和某些文件系统上,您可以执行以下操作:

fallocate -l 1M nullbytes

这会分配空间而不实际将数据写入磁盘(空间被保留但标记为未初始化)。

dd < /dev/zero bs=1048576 count=1 > nullbytes

实际上会将零写入磁盘。这是效率最低的,但如果您需要驱动器在访问该文件时旋转,那么这就是您想要的。

或者 @mikeserv 的方法来欺骗dd生成 NUL 字节:

dd bs=1048576 count=1 conv=sync,noerror 0> /dev/null > nullbytes

GNU 的替代方案head不需要指定块大小(1M 可以,但例如 10G 就不行):

head -c 1M < /dev/zero > nullbytes

或者获取进度条:

pv -Ss 1M < /dev/zero > nullbytes

答案2

dd if=/dev/zero of=/var/tmp/nullbytes count=1 bs=1M

相关内容