如何通过dd将数据追加到文件中?


19

我想在存储在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

它也不起作用。

Answers:


12

关于什么:

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

您的解决方案有效。谢谢。但是您知道为什么我的解决方案不起作用吗?我已经检查了手册页。找不到原因。谢谢。
城市


1

在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当前文件的大小在哪里。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.