在将损坏的文件系统映像到另一个硬盘驱动器上的文件之前,我决定试运行ddrescue
(将救援的输出扔到/dev/null
)只是为了看看有多少数据不可读:
# ddrescue -d -b 4096 -r 3 -f /dev/sda1 /dev/null sda1.log
最终花了3天的时间才完成。现在我已经准备好制作真实的图像,但我不想再等三天才能完成。但是,幸运的是,因为我有一个日志文件,是否可以强制ddrescue
仅救援好扇区而不触及坏扇区?
阅读了一些文档后,我提出了以下想法:
# ddrescue -d -b 4096 --fill=+ /dev/sda1 /mnt/sda1.img sda1.log
这行得通吗?是否有另一种(首选)方法仅重读好扇区?
答案1
仔细阅读ddrescue
手册,发现以下选项:
-m file
--domain-logfile=file
将救援域限制为日志文件中标记为已完成的块文件。如果目标驱动器在救援期间发生故障,这非常有用。
所以调用ddrescue
看起来像这样:
# ddrescue -d -b 4096 -m sda1.log /dev/sda1 /mnt/sda1.img logfile2.log
答案2
了解 ddrecue 的作用后,您在从损坏的磁盘恢复数据时不应使用它写入 /dev/null,而应使用写入真实映像文件来获取“至少某些内容”。
写入 /dev/null 是有意义的,例如,如果您想知道全新磁盘是否将其返回到存储。
在这种情况下,我不会使用“/dev/null attempts”中的日志文件,而是使用空/新的日志文件,然后最终尝试多次传递,具体取决于它的作用...
答案3
2018年快速编辑:
几年前,我ddrescue
有时会使用它来拯救硬盘。
dd
比表面破损的硬盘更快。
但dd
确实很安全,我的第一篇文章保持真实。
原帖
这是一个非常糟糕的主意!!
空运行 ddrescue,将救援输出扔到 /dev/null
我说的是将损坏的文件系统映像到另一个硬盘驱动器上的文件之前...
当磁盘驱动器损坏时,损坏通常会增加每次您尝试访问您的驱动器时。
所以这挽救损坏的驱动器的好方法是通过一次不间断的操作从头到尾复制整个磁盘来制作映像!。之后:拔下磁盘驱动器并安静地存放它们。正如:越少接触损坏的驱动器,就越有可能恢复某些内容。
由于每次机械接触破损材料都可能造成更多损坏,因此您上次操作的日志会变成这样不是参考了解哪个块已损坏现在。
这是正确的dd
语法原始 dd 读取甚至坏块。
dd bs=512 if=/dev/sdX of=/backuprepo/sdXBroken.img conv=noerror,sync
而且,我让它耐心地工作。