我的硬盘有坏块或坏扇区,由于潜在的机械问题(例如磁头坏、电机坏或其他问题)而无法读取,这些问题导致硬盘读取数据的速度非常慢,并且读取错误很多。我看到平均读取速度为 50 KB/秒,有些读取速度低于 10 KB/秒,并且经常卡在某个文件或扇区上,通常会持续很长时间 - 2-10 分钟或更长时间(使用 rsync 时,直到超时)。
速度似乎变化很大,而且它经常卡在文件上,当它最终“解卡”时,它似乎只持续了一小段时间,然后又卡住了。驱动器也非常安静,只有偶尔复制文件的声音(通常是在它短暂地卡住/解卡,然后再次卡住时)。因此,没有那些通常与硬盘驱动器死亡相关的邪恶声音。有人建议,这些问题听起来可能是由磁头未对准引起的,这需要多次重新读取才能最终成功读取数据。听起来很有道理,但我离题了……
无论如何,rsync 的问题在于它似乎没有像样的错误处理支持。显然,它不是用来从故障硬盘驱动器中恢复数据的,但所有所谓的“数据恢复”实用程序是用于此类用途的软件通常专注于恢复已删除的文件或混乱的分区,而不是从坏掉的硬盘上复制文件。显然,恢复已删除的文件不是我需要的,所以也许你可以理解我因为还没能找到我想要的东西而感到的失望。
当然,这时您可能会说“您应该使用 ddrescue!”好吧,这很好,但我已经备份了大部分数据,所以我只想恢复某些文件。我并不关心像 ddrescue 那样逐块恢复整个分区。我只关心恢复特定的文件和目录。
理想情况下,我想要的是 rsync 和 ddrescue 之间的某种交叉:它可以让我将源和目标指定为普通文件的目录,例如 rsync(而不是 ddrescue 所需的两个完整分区),并且可以在初始运行中跳过有错误的文件,然后允许我在以后的运行中尝试恢复那些有错误的文件(当然,使用稍微改变的命令),甚至可以提供一个选项来指定重试次数...就像 ddrescue 如何处理块一样,我只想要一个像 rsync 一样可以对特定文件/目录起作用的实用程序。
那么,我是在做白日梦,还是有什么东西可以做到这一点?或者,也许甚至有一种方法可以让 rsync 或 ddrescue 以这种方式工作?我真的愿意接受任何可能有效的解决方案,只要它们让我选择要“拯救”的文件,并且可以在初始运行中跳过有错误的文件,然后稍后再次尝试/重试这些错误。
到目前为止,我尝试使用以下选项进行 rsync,但它经常会停留在一个文件上的时间超过超时时间,理想情况下,我希望它转到下一个文件,稍后再返回到它停留的文件。但我认为这是不可能的。无论如何,以下是我到目前为止一直在使用的方法:
rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/
答案1
我有一台 3TB 的 Hitachi,读取速度非常慢,ddrescue 可以在文件级别运行。但不能在目录级别运行。但是我无法让 ddrescue 的 --timeout 或 --min-read-rate 选项工作。
您可能希望在脚本中执行此操作,以便一次 ddrescue 一个文件。
cat listoffiles | while read file
pipe while> do
pipe while> ls -l "$file"
pipe while> ddrescue -n -e1 "$file" /cc/RecoveredFiles/"$file" /cc/RecoveredFiles/"$file".llog
pipe while> date
done | tee -a /cc/RecoveredFiles/ddrescue.log
答案2
也许自从提出这个问题以来,rsync 已经发生了变化。
我的经验是,rsync
目前它可以很好地从坏掉的硬盘上复制东西,
rsync -a <src> <dest>
如果遇到错误,它会快速继续,重新运行时会返回再次尝试这些文件。
rsync --version
报告
rsync version 2.6.9 protocol version 29
关于其他答案:
2011 年的答案似乎在推广与 ddrescue 等同的商业工具 - 没有迹象表明它们是文件感知的。可疑。2013 年的答案很有趣。
答案3
好问题,喜欢这种详细程度。对于适合这种场景的实用程序,我建议尝试 Filescavenger奎特克。它将允许在 100 次以上次数中进行过度重读,但更重要的是,它具有磁盘映像功能,可让您将所有内容转储到映像中,而无需浪费时间尝试评估文件,然后加载映像并扫描文件。该实用程序对于家庭用户来说价格为 50 美元,但您可以下载并测试它,以便在花钱之前查看可以从映像中恢复什么。
如果是专业用途,它会花费你一大笔钱,但会获得重要的功能,包括对逻辑和硬件 raid 阵列的支持。
如果这也失败了,那么您可能已经不再需要软件恢复工具了。如果您已经不需要了,并且能够证明实验室恢复的成本是合理的,请告诉我您所在的国家/地区、州和城市。我可以向您推荐我们或竞争对手的实验室之一,它们离您很近。
克里斯
答案4
你要逐行复印机。它的目标是处理整个驱动器,但由于它以文件路径作为参数,因此它也应该适用于单个文件。我认为它不适用于目录——您必须指定每个文件。