是否要在不截断文件的情况下从块设备覆盖文件的中间部分?

是否要在不截断文件的情况下从块设备覆盖文件的中间部分?

我有一台 Linux (Kubuntu) 系统,里面有一个大文件 (~20Gb),我想处理一下。具体来说,我想将另一个大文件 (~12Gb) 的全部内容复制到此文件的中间,并保留文件未被覆盖的部分。

这就是我想要发生的事情,管道之间的文本代表文件内容:

前:

outfile: |abcdefghijklmnopqrstuvwxyz|
infile:  |123456789|

后:

outfile: |abcdef123456789pqrstuvwxyz|
(infile is here ^^^^^^^^^)

我尝试了这个:

dd if=infile of=outfile seek=162

(162 是我要在 outfile 中偏移的扇区数)

但事实是这样的:

outfile: |abcdef123456789|
(missing part of outfile ^)

做这个的最好方式是什么?

答案1

您需要为 dd 指定 conv=notrunc。来自手册页

任何常规输出文件都会被截断,除非指定了 notrunc 转换值。如果输出文件的初始部分被搜索过去(参见 oseek 操作数),则输出文件会在该点被截断。

相关内容