我正在尝试从存在硬件错误的磁盘恢复文件。
磁盘实用程序已修复磁盘,但它告诉我磁盘已损坏,因此我需要在发生故障之前备份所有内容。
所以我尝试通过 Finder 复制文件,但卡住了。尝试了其他实用程序,当磁头碰到损坏的块时,它们在尝试复制文件时卡住了。
因此我尝试使用 rsync,它似乎可以工作;但是当我遇到坏块时,它需要很长时间。
所以我想知道,如果花费的时间太长,是否有办法告诉 Rsync 甚至不要理会文件?我可以指定每个文件的尝试次数,或者每个文件需要尝试多长时间?
老实说,我不确定这个驱动器可以使用多长时间,所以我想尽快获取所有数据,同时我仍然可以安装它并在 Finder 中查看其上的数据。
这就是我正在使用的命令;请建议是否有任何方法可以减少文件的尝试,这样我就可以让 rsync 尝试读取损坏的块,但避免在特定扇区上停留太久。
rsync -arv -e--ignore-errors --partial-dir=/Volumes/backup/partial /Volumes/work /Volumes/backup
提前致谢。
答案1
简短回答:rsync
在这种情况下,它不是合适的工具:使用它甚至可能有害。
改用ddrescue
(优于dd_rescue
)。它能够满足您的要求。
如果磁盘受到物理损坏,则有可能砖任何试图修复它的尝试。
这不仅仅是关于使用你的时间,当rsync
接近损坏的扇区时似乎会永远挂起。问题是,随着重复操作,可能会发生无法修复的故障,然后您将无法再在不更换昂贵部件的情况下挽救数据(如果仍然可能并且您没有砖砌的你的硬盘)。
在这种情况下,我发现最安全的方法是
- 要创建一个原始图像在另一个未损坏的磁盘上。
- 要创建一个复制该图像的
- 到处理副本以修复文件系统并拯救文件。
为什么要复制?因为如果它失败了文件系统修复步骤你可以随时重新开始,而不需要再次接触原来的损坏硬盘。
我建议你使用ddrescue
,制作原始磁盘映像,包括缺陷,因为即使出现读取错误,它也能正常工作。
如何做ddrescue
您可以ddrescue
完全按照自己的意愿使用rsync
,跳过损坏的扇区而不重试或拆分它们,复制尽可能多的数据。
此命令如下(而不是/dev/hda1
您将放置设备):
ddrescue --no-split /dev/hda1 imagefile logfile
之后你就完成了第一段(更快的一个),可以尝试优化一下,多试3次,以免出错。
ddrescue --direct --max-retries=3 /dev/hda1 imagefile logfile
您可以继续完善图像,重复ddrescue
使用其他选项的命令调用,每次都尝试提取更多数据(请参阅参考资料)。完成后,您可以创建副本(如果您拥有所有所需的空间),然后修复文件系统。
请注意,原始图像将与原始图像一样大硬盘您可以在互联网上、
这个网站上以及 StackExchange 的其他网站上找到许多问题和答案关于如何使用ddrescue
或其他工具拯救数据。
参考:
答案2
我在寻找从故障 SD 卡(Ubuntu 20.04)保存数据的解决方案时发现了这个主题。
答案的哈斯塔很棒,尽管这些命令在 Ubuntu 20.04 上对我来说不起作用。
基于格伦普芬布尔评论和ddrescue --help
- 标志已被删除,因此
--no-split
可以使用--no-scrape
-n, --no-scrape 跳过抓取阶段
ddrescue --no-scrape /dev/hda1 imagefile logfile
并且精炼的命令也发生了改变。
- 使用
-d
或--idirect
直接访问输入文件的磁盘-d, --idirect 使用直接磁盘访问输入文件
- 我们可以
--max-retries=3
使用-r
或--retry-passes=<n>
-r, --retry-passes=重试通过后退出(-1=无穷大)[0]
ddrescue --idirect --retry-passes=3 /dev/hda1 imagefile logfile
我认为这篇文章没有任何功劳,它只是对答案的更新哈斯塔。