如何告诉rsync跳过损坏的硬盘块上的文件,而不是试图读取它而被卡住


13

我正在尝试从具有硬件错误的磁盘中恢复文件。

该磁盘已通过磁盘实用程序修复,但它告诉我该磁盘已损坏,因此在发生故障之前,我需要备份所有内容。

所以我试图通过finder复制文件,但是卡住了。尝试了其他实用程序,当磁头撞到损坏的块时,它们在尝试复制文件时被卡住。

所以我尝试了rsync,它似乎可以工作;但是当我碰到坏块时,它会永远花费。

所以我想知道,是否有一种方法可以告诉Rsync甚至不打扰一个文件,是否花费太长时间?我可以指定每个文件尝试的次数,或者每个文件需要尝试多长时间?

我不确定该驱动器可以持续使用多长时间,因此我想尽快删除所有数据,同时仍可以挂载它并在finder中查看其中的数据。

这就是我使用的命令;请建议是否有任何方法可以减少对文件的尝试,因此我可以让rsync尝试读取损坏的块,但避免卡在特定扇区上的时间过长。

rsync -arv -e--ignore-errors --partial-dir=/Volumes/backup/partial /Volumes/work /Volumes/backup

提前致谢。


3
如果驱动器的扇区损坏,则最好尝试使用诸如进行映像,该驱动器dd_rescue具有高级功能以应对坏扇区。
jmreicha 2013年

我认为@jmreicha是个正确的主意,但是在将来,如果您有rsync技术问题,可以在rsync列表中找到友好的专家:lists.samba.org/mailman/listinfo/rsync

Answers:


10

简短的回答:rsync在这种情况下,它不是正确的工具:使用它甚至可能有害。
使用ddrescue代替(比更好dd_rescue)。它能够满足您的要求。


如果磁盘物理损坏,则有可能尝试对其进行修整以使其成为砖块

这不仅是关于您的时间使用的问题,何时rsync似乎永远挂在损坏的扇区附近。问题是,重复操作的不可修复的故障可能发生,那么你将不再能够拯救你的数据,而无需昂贵的零部件更换(总是这是否仍然有可能,你会不会有砖砌HDD)。

在这种情况下,我发现的最安全的程序是

  1. 在另一个未损坏的磁盘上创建原始映像
  2. 创建该图像的副本
  3. 在副本上努力解决文件系统和抢救文件

为什么要复制?因为如果文件系统修复步骤中的某些操作失败,则始终可以重新启动,而无需再次触摸原始损坏的HDD

我建议您使用ddrescue来制作原始磁盘映像,包括缺陷,因为即使出现读取错误,它也可以正常工作。


怎么做 ddrescue

您可以ddrescue按照自己的rsync意愿使用,跳过损坏的扇区,而无需重试或拆分它们,并复制尽可能多的数据。
该命令在下面(代替/dev/hda1放置设备):

ddrescue --no-split /dev/hda1 imagefile logfile

之后,您完成了第一篇文章(速度更快的文章),可以尝试对其进行优化以尝试3次访问,以防出现错误。

ddrescue --direct --max-retries=3 /dev/hda1 imagefile logfile 

您可以继续优化图像,ddrescue并使用其他选项重复命令调用,每次尝试提取更多数据(请参阅参考资料)。完成后,您可以创建副本(如果您拥有所有需要的空间),然后修复文件系统

请注意,原始图像将与原始HDD一样大。
您可以在Internet上,StackExchange的此站点以及其他站点上找到有关如何使用或其他工具抢救数据的许多问题和解答ddrescue

参考文献:


确实dd_rescue是要走的路。我在2年前的原始答复中收到了它;但由于某些原因,有人认为我无法回答自己的问题:)感谢您的答复和令人敬畏的细节
rataplan 2015年

@newbiez:相反,我的主硬盘几乎是砖头的,但是我遇到了严重的磁盘问题……所以我遇到了ddrescue它的朋友:-)关于您的答案,只有一个字:很奇怪 ……再发布一次,如果有人尝试再次关闭它我将投票赞成重新开放(我从未使用过这种新功能:D)
Hastur 2015年

1
--no-split选项在较新版本的ddrescue中已删除。请改用--no-scrape。请参阅lists.gnu.org/archive/html/bug-ddrescue/2015-09/msg00001.html
Grmpfhmbl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.