附加 0 以使用 dd 生成 1MB 文件

Appending 0's to make 1MB file with dd

我有一个 512 字节长的二进制文件 abc.bin,我需要通过将 0 (0x00) 附加到 abc.bin 来生成 1M (1024 x 1024 = 1048576) 字节的文件。我如何使用 dd 实用程序做到这一点?

例如,abc.bin 有 512 个字节的 0x01(“11 ... 11”),我需要有一个 helloos.bin,即 1048576 个字节(“11 ... 11000 ... 000"); 0不是'0',而是0x00,0x00的个数是1048576 - 512。

我假设您实际上是想在磁盘上分配 1M 的零,而不仅仅是一个报告长度为 1MiB 并读取为零的文件。

dd if=/dev/zero count=2047 bs=512 >> abc.bin

你可以告诉dd查找到文件中1M的位置,这样的效果是使其大小至少为1M:

dd if=/dev/null of=abc.bin obs=1M seek=1

如果要确保 dd 只扩展,从不截断文件,请添加 conv=notrunc:

dd if=/dev/null of=abc.bin obs=1M seek=1 conv=notrunc

如果您使用的是带有 GNU coreutils 的系统(就像任何 Linux 系统一样),您可以使用 truncate 命令而不是 dd:

truncate --size=1M abc.bin

如果您想确保文件只被扩展,绝不会被截断:

truncate --size=\>1M abc.bin

这个方法也有效:

  1. 用 0(0x00)s 创建一个 1M 的文件 - dd if=/dev/zero of=helloos.bin bs=512 count=2048
  2. 在创建的文件上写入abc - dd of=helloos.bin conv=notrunc if=abc.bin

没有conv=notrunc选项,我只有512字节的文件。我还可以使用 seek=N 通过跳过 N 块来控制起始位置。