Answers:
可以恢复ddrescue,但是它需要一个日志文件才能恢复。日志文件将记录ddrescue到目前为止的进度,重新启动ddrescue将读取日志文件并从上次中断的地方开始。
日志文件将是第三个参数:
ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log
如果您已经启动了没有日志文件的ddrescue运行并取消了它,则下次ddrescue运行时,它将从头开始,因为它没有已恢复内容的记录。
即使您忘记指定日志文件,也可能会有希望:
因此,您没有阅读本教程,没有日志文件就没有启动ddrescue。现在,两天后,您的计算机崩溃了,您不知道ddrescue可以保存多少数据。更糟糕的是,您无法继续进行救援。您必须从一开始就重新启动它。
或者,也许您开始使用复制驱动器,dd conv=noerror,sync
并且现在处于上述相同的情况。在这种情况下,请注意,除非使用sync
conversion参数调用dd,否则不能使用它制作的副本。
别失望(还)。在某些情况下,Ddrescue可以从输入文件和(部分)副本生成近似的日志文件,几乎与精确的日志文件一样好。通过简单地假设包含所有零的扇区没有被拯救来做到这一点。
但是,如果副本的目的地是驱动器或分区(或不要求现有的常规文件且不要求截断),则很可能需要从头开始重新启动ddrescue。(当然这次有一个日志文件)。原因是驱动器中可能存在尚未被覆盖的旧数据,因此可能未尝试但非零。
例如,如果您首先尝试以下命令之一:
ddrescue infile outfile
要么
dd if=infile of=outfile conv=noerror,sync
您可以使用以下命令生成一个近似的日志文件:
ddrescue --generate-mode infile outfile logfile
每个https://wiki.archlinux.org/index.php/Disk_cloning看来,实际上,使用该conv=noerror,sync
开关dd
确实会在块的末尾添加零,而不是精确地出现读取错误的位置。这与Miles Wolbe从2013-08-29开始的回答中的信息相反。
例如,如果序列正确198123283
,并且中间出现读取错误,它将写入198283000
,而不是198000283
。
因此,在实际存在读取错误的情况下,建议的方法将不准确-将存在一些本可以读取的区域,这些区域最终将填充零,但将被视为“已救援”。
顺便说一句,一个好的实践是通过用零(或至少可用空间,例如可以用WinHex完成)填充目标驱动器来开始这种恢复尝试。