Nor*_*tfi 27
TLDR:使用 ddrescue
它支持恢复/继续功能,具有自动日志和大量其他选项。更多在ddrescue 主页。
示例语法:
ddrescue /dev/sde yourimagename.image sde.log
Run Code Online (Sandbox Code Playgroud)
如果您想(根据您的评论提到恢复)将图像从上面的命令恢复到另一个完全相同大小的驱动器上:
ddrescue -f yourimagehere.image /dev/sde restore.logfile
Run Code Online (Sandbox Code Playgroud)
此外,它比 dd 更快——至少在比较ddrescue和dd+ 的速度时看起来确实如此pv。
小智 5
关于“不检查或报告错误”的原始评论可能是因为默认情况下“dd”不会填充坏读取,因此对于面向块的设备不仅坏块而且所有后续块都将是不正确的(因为它们是不再对齐)。正如其他人所说,这是可以使用 'conv=noerror,sync' 选项修复的,该选项告诉 dd 确保块保留在块边界上。它应该通过与文件系统块大小匹配的块大小设置加入,通常为 4096 字节,但可以更低。
我同意 Johan Myréen 关于使用文件备份的评论,因为备份的粒度要小得多 - 备份一个文件的错误不一定会影响其他文件。您还可以使用对文件数据进行纠错的文件系统(例如 zfs、btrfs 和其他一些配置),因此至少您知道何时发生错误并希望可以修复它们。
检测错误备份的另一种方法是使用消息摘要哈希代码,例如原始设备(未安装!!)和 dd 备份文件上的“sha256”……它们当然应该是相同的。
最后,备份的最佳实践永远不要只依赖一个备份……至少保留 2 个!