我想将新数据附加到存储在 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
,表示当前文件大小。