使用 conv=noerror,sync 执行时,dd 输出文件大于输入文件

使用 conv=noerror,sync 执行时,dd 输出文件大于输入文件

我正在尝试使用以下命令在我的其中一台服务器上备份 LVM:

dd bs=4M conv=noerror,sync if=/dev/vg_volgroup/LvmName | ssh myuer@myip “dd of=/home/myuser/LvmName bs=4M conv=noerror,sync”

我正在读取此 LVM 的磁盘有一个坏扇区返回:

dd:读取“/dev/vg_volgroup/Lvmname”:输入/输出错误
224+1 条记录输入
225+0 条记录输出
943718400 字节(944 MB)已复制,1313.12 秒,719 kB/s

由于这个坏扇区我使用 conv=noerror,sync

原始 LVM 为 100GB,输出 LVM 为 130GB 并且还在增长。有人知道这是为什么吗,或者我做错了什么吗?
据我所知,noerror 会用零填充有缺陷的块,但我不清楚这会如何使 LVM 变大。
有人有什么提示或想法吗?

更新:

使用 kill -USR1 pid
其中 pid 是发送数据的 dd 进程的 pid,返回以下内容:

601+1 条记录输入
601+0 条记录输出
2520776704 字节 (2.5 GB) 已复制,4457.14 秒,566 kB/s

但现在输出文件的大小为 154GB。

答案1

您应该检查输出文件以找出其中的内容。了解文件中的内容有助于确定它的来源。作为起点,您可以head -c10k /home/myuser/LvmName | hexdump -C尝试tail -c10k /home/myuser/LvmName | hexdump -C

我的猜测是它要么主要由 NUL 字符组成,要么由某种文本消息组成,而这些文本消息并不旨在重定向到该文件。

相关内容