如何使用 dd 将数据附加到文件中?

如何使用 dd 将数据附加到文件中?

我想将新数据附加到存储在 SSD 中的文件中。

dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append

但是 df -h 显示 dd 命令总是覆盖测试文件,而是在测试文件中附加新数据。我也试过了

dd if=/dev/shm/test of=/data/sdb/test bs=1G conv=notrunc

它也不起作用。

答案1

关于什么:

 dd if=/dev/shm/test bs=1G >>/data/sdb/test

答案2

dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append conv=notrunc 

我认为你应该用这个。

參考文獻:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=373736

答案3

有一种更简单的方法可以将稀疏洞附加到文件。

truncate比 dd 快得多。要将文件增大 10 个字节,请使用:

 truncate -s +10 file.txt 

答案可以在以下网址找到: https://serverfault.com/a/343726/70242

答案4

在 Linux 内核 4.1 中,FALLOC_FL_INSERT_RANGE添加了选项。从fallocate(2) 手册页

在模式下指定 FALLOC_FL_INSERT_RANGE 标志(自 Linux 4.1 起可用)可通过在文件大小内插入一个洞而不覆盖任何现有数据来增加文件空间。该洞将从偏移量开始并持续 len 个字节。在文件内插入洞时,从偏移量开始的文件内容将向上移动(即,移动到更高的文件偏移量)len 个字节。在文件内插入洞会使文件大小增加 len 个字节。

最近这个选项支持加入util-linux

   -i, --insert-range
          Insert a hole of length bytes from offset, shifting existing
          data.

因此,当util-linux版本 2.30 发布并且您的 Linux 发行版将更新到此版本时,我们将能够通过运行以下命令快速增加文件大小:

fallocate -i -l 1G -o 128M /path/to/file

其中128M,表示当前文件大小。

相关内容