如何恢复 ddrescue 进程?

如何恢复 ddrescue 进程?

我必须恢复我的 1TB USB HD。我正在使用ddrescue它来实现这一点。有没有办法ddrescue在启动后恢复?

我正在使用以下命令:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image

答案1

救援可以恢复,但需要日志文件才能恢复。日志文件将记录 ddrescue 迄今为止的进度,重新启动 ddrescue 将读取日志文件并从中断处开始。

日志文件将是第三个参数:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log

如果您已经在没有日志文件的情况下启动了 ddrescue 运行并取消了它,则下次运行 ddrescue 时,它​​将从头开始,因为它没有已经恢复内容的记录。

笔记救援dd_救援是不同的程序。

答案2

即使您忘记指定日志文件,也可能有希望:

生成模式

所以你没有阅读教程,并且在没有日志文件的情况下启动了 ddrescue。现在,两天后,你的电脑崩溃了,你不知道 ddrescue 成功保存了多少数据。更糟糕的是,你无法恢复救援;你必须从头开始重新启动它。

或者,也许您开始使用 复制驱动器dd conv=noerror,sync,现在处于上述相同的情况。在这种情况下,请注意,除非使用转换参数调用 dd,否则您不能使用由 dd 创建的副本sync

不要绝望(现在还不要)。Ddrescue 在某些情况下可以根据输入文件和(部分)副本生成近似日志文件,它几乎与精确日志文件一样好。它通过简单地假设包含全零的扇区未被拯救来实现这一点。

但是,如果复制的目标是驱动器或分区(或现有的常规文件且未请求截断),则很可能需要从头开始重新启动 ddrescue。(这次当然是使用日志文件)。原因是驱动器中可能存在尚未覆盖的旧数据,因此可能未尝试但非零。

例如,如果您首先尝试以下命令之一:

ddrescue infile outfile

或者

dd if=infile of=outfile conv=noerror,sync

您可以使用以下命令生成近似的日志文件:

ddrescue --generate-mode infile outfile logfile

答案3

正如其他人所说,您应该始终指定一个日志文件作为第三个参数,这将允许恢复。由于您没有这样做,所以这对您没有帮助。如果您大致知道流程进行到哪个点,则可以使用和--input-position参数--output-position从该点开始(确保将这两个参数设置为相同的值,否则输出将被破坏)。

答案4

https://wiki.archlinux.org/index.php/Disk_cloning看来conv=noerror,sync,使用 switchdd确实添加了零在最后块的位置,而不是读取错误发生的确切位置。这与 Miles Wolbe 在 2013-08-29 的回答中的信息相反。

例如,如果正确序列是198123283,而中间有读取错误,则会写入198283000,而不是198000283

因此,如果确实存在读取错误,则所提出的方法将不准确 - 将会有一些本来可读的区域最终将被零填充,但仍将被视为“已挽救”。

顺便说一句,开始进行此类恢复尝试时,最好先用零填充目标驱动器(或者至少是可用空间,例如可以使用 WinHex 来完成)。

相关内容