ddrescue:第一次运行后重试失败的块

ddrescue:第一次运行后重试失败的块

我使用 备份了故障硬盘ddrescue。我使用的命令是

# ddrescue -vv -d -J /dev/sda /mnt/rescue/winxp.img winxp.map

程序完成时出现大约 60 个错误。我只想重试失败的块。我在手册页中找到了此部分:

-m file
--domain-mapfile=file
    Restrict the rescue domain to the blocks marked as finished in the
    mapfile file. This is useful for merging partially recovered images of 
    backups, or if the destination drive fails during the rescue. Use '-' 
    as file to read the domain mapfile from standard input. Specialized 
    tools like ddrutility or partclone can produce a domain mapfile 
    listing all the used blocks in a partition, making the rescue more
    efficient.
-M
--retrim
    Mark all failed blocks inside the rescue domain as non-trimmed before
    beginning the rescue. The effect is similar to '--retry-passes=1', but
    the bad sectors are tried in a different order, making perhaps
    possible to rescue some of them.

我发出的下一个命令是

# ddrescue -vv -d -M -m winxp.map /dev/sda /mnt/rescue/winxp.img winxp.2.map

我以为这只会重试之前失败的块。然而,它似乎又从整个过程开始,并试图挽救整个磁盘。

有没有办法只重试失败的块,并在成功时将它们保存在前一个图像中?

答案1

您需要使用相同的每次都会创建一个新的 map 文件——这里记录了已经尝试过的区域以及它们是否成功或失败。

您通常不需要在每次运行中更改命令,只需重新发出命令即可让它再次重试失败的区域。


使用-m意愿(如手册所述)“将救援范围限制在区块内标记为完成在 mapfile 文件中。“——即:仅尝试读取成功的块。

再次,正如手册所述,这与其他实用程序结合使用很有用,可以减少读取的数据量,并可能减少运行时间和遇到的错误数量。

相关内容