从可安装分区检索数据,拒绝“cp”,但允许“dd”

从可安装分区检索数据,拒绝“cp”,但允许“dd”

最近,我的内置驱动器在手动重启后出现故障,我想在更改数据之前检索数据。我的电脑是 2012 年中期的 Macbook Pro,驱动器格式化为 HFS+。(从我的角度来看,问题与硬件有关,因此并非 Apple 世界所特有,所以我在这里发帖而不是在 apple.stackexchange 上发帖,但如果有必要,请随时迁移它。)

通常的dd克隆不是一种选择:它是一个 500GB 的驱动器,并且由于某种原因,复制的速率为 20KB/s(至少bs=512我看到在处理硬盘时建议使用此速率),这意味着完成这项工作大约需要 6000 小时......

安装分区并使用cp也不是:当我尝试这样做时,我收到消息

cp : Input/output error

另外,可能要说的是,我无法以传统方式安装分区。它仅在恢复模式下启动时安装,或者在从外部驱动器启动时使用 TestDisk 运行分析后安装。

从 TestDisk 的分析(未显示任何错误)来看,我认为文件系统没有问题,我更倾向于认为驱动器有坏块(因此是物理损坏,对吗?)。另外,当我尝试时fsck_hfs,它确实不起作用,但错误似乎与文件系统无关:它说

could not get Block 2, not a MDB sector
[...]
volumeType is 0

(如果需要,我可以重新运行它来粘贴整个日志。)

但是当分区挂载时,我仍然可以dd在单个文件上使用(我不需要所有数据)。是否有任何脚本/软件可以dd在内部用于复制整个目录的内容?我真的不想dd在数百个文件上实际编写命令...

或者有人有更好的主意来恢复这些数据吗?

答案1

使用ddwithbs=512确实会降低速度,我想象这就像试图跑一英里,但步幅只有 1 英寸。使用更大的值(例如bs=10M或更大)应该会好得多。

无论如何,文件可能并非全部连续,因此尝试仅剪切驱动器的正确部分dd对每个文件都不起作用,并且(可能不太清楚 HFS 的工作原理)也不会为您获取文件名。更好的想法是尝试一个可以从可能有问题的分区复制文件的程序,使用:

  • testdisk可以查看许多文件系统的文件(包括最近删除的文件)并将它们从分区中复制出来。它的姊妹程序photorec可以搜索原始驱动器(或驱动器映像)并复制文件,但通常不带原始名称。

  • 但最好的办法可能是gddrescue复制驱动器的可读部分,它应该是故障驱动器数据恢复方面的专家,它可以跳过读取失败的部分,一旦它获得了所有“简单”部分,您就可以再次尝试读取可能读取也可能读取失败但需要很长时间的“困难”部分。然后,您可以正确尝试文件系统检查/修复和数据雕刻(photorec),而不必担心驱动器进一步损坏或突然故障。

    • 查看GNU ddrescue 手册网络上也有一些指南(但我更倾向于先阅读精细的手册)。

相关内容