我必须恢复我的 1TB USB HD。我正在使用ddrescue
它来实现这一点。有没有办法ddrescue
在启动后恢复?
我正在使用以下命令:
ddrescue /dev/sdd1 ./bye1t.dd_rescue.image
答案1
答案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 来完成)。