该dd
命令通常用于制作驱动器或分区的映像备份。但是,如果源驱动器不可靠或出现故障,它的性能会很差。我读到ddrescue
/dd_rescue
是一款用于从坏驱动器恢复映像的好工具,因为它会智能地尝试重新读取第一次读取失败的扇区。
但在 Ubuntu 存储库中,我看到两个不同的ddrescue
程序,它们有 3 个不同但相似的名称出现在不同的地方:ddrescue
,,gddrescue
。dd_rescue
有什么区别?
答案1
ddrescue
容易让人混淆的是,这两个项目可能完全不同,dd_rescue
作者:Kurt Garloff,以及GNU 救援. 两者目的相同,且均在积极开发中。
Garloff 的程序dd_rescue
是第一次尝试改进dd
;GNU ddrescue 较新,并且是为了解决dd_rescue
。
一些来源更喜欢 GNU ddrescue 而不是dd_rescue
。例如,
http://lwn.net/Articles/430000/
ddrescue 胜出(在我看来),因为它是一个用 C++ 编写的高效独立程序(不是 shell 脚本的临时解决方案),在控制台/终端上产生更清晰的输出,并且(最重要的是)优雅而智能地处理不可读的块。
http://www.toad.com/gnu/sysadmin/index.html#ddrescue
GNU ddrescue 是你最好的朋友。
它模仿了前面两个程序 dd_rescue(带有下划线)和 dd_rhelp。但 GNU ddrescue 比这两个程序都好得多——我在同一个驱动器上尝试过这三个程序,也尝试过使用普通的“dd”。
Antonio Diaz Diaz 的 GNU ddrescue 吸取了这些经验。它结合了 dd_rescue 读取大块然后换挡的能力,以及 dd_rhelp 记住磁盘哪些部分已被查看的能力。它以非常简单的日志文件格式保存此信息,并每 30 秒更新一次,或者在停止或中断时更新。它是用 C++ 编写的,小巧而快速。
GNU ddrescue 的一个优点是它可以更快地备份大多数数据,方法是先跳过坏块(恢复速度很慢),然后仅在备份好块后才返回到这些块。GNU ddrescue 的一个缺点是它不支持管道输出,这意味着您无法使用gzip
或压缩输出图像lzop
。
Ubuntu 软件包
不幸的是,Ubuntu 存储库中的软件包名称令人困惑;dd_rescue
被打包在名称下ddrescue
,并且ddrescue
被打包在 下gddrescue
!从软件包摘要中:
gddrescue
包裹:请注意,这是提供 /sbin/ddrescue 可执行文件的 GNU ddrescue 版本。如果您正在搜索 Kurt Garloff 的 ddrescue 版本,请查看 ddrescue 包。
ddrescue
包裹:请注意,这是 Kurt Garloff 的 dd_rescue 版本,提供 /bin/dd_rescue 可执行文件。如果您正在搜索 GNU ddrescue 版本,请查看 gddrescue 包。
姓名概要:
Program name Ubuntu package name Executable name Name in URL
GNU ddrescue gddrescue ddrescue ddrescue
dd_rescue ddrescue dd_rescue ddrescue