需要帮助进行 APFS 数据恢复

我正在尝试从一个采用 APFS 格式的硬盘中恢复文件,因为它在我的 Mac 上无法正常挂载了。磁盘工具可以看到这个硬盘,但我无法访问其中的数据,而且我担心会让情况变得更糟。处理 APFS 数据恢复并找回我的文件,最安全的方法是什么?

我会立刻停止使用那个 APFS 驱动器。这一点比任何事都重要。不要往里面保存文件,不要把恢复工具安装到上面,如果能避免,也不要让 macOS 继续在上面进行正常工作。只有在这些数据块尚未被重新使用时,被删除的数据才有可能恢复。

驱动器的类型在这里有很大区别。

如果它是外置 HDD,或者是较旧的、使用 APFS 格式化机械硬盘的 Mac,只要丢失的数据还没有被覆盖,恢复成功的几率通常还是不错的。

如果它是 SSD,情况就没那么乐观了,因为有 TRIM。TRIM 会让 SSD 知道哪些已删除的数据块可以被清除。一旦这个清理过程真的发生,恢复软件就无法神奇地重建这些文件了。所以如果这是发生在 APFS SSD 上,不要继续使用这台 Mac 并指望它自己恢复。你越早停下来,机会就越大。在较新的 macOS 安装中,你通常也无法关闭内部 SSD 的 TRIM,所以速度基本上就是你唯一的优势。

在急着使用恢复软件之前,先检查一些简单的东西:

  1. Time Machine 备份。
  2. 任何可用的 APFS 快照。
  3. FileVault 加密。如果驱动器已加密,在大多数工具能够正确扫描之前,必须先解锁或解密。

至于实际恢复,对我来说,Disk Drill 的效果最好。它会将 APFS 作为文件系统来处理,而不只是进行原始文件雕刻,因此当元数据仍然存在时,它可能会保留文件夹路径和原始文件名。

最安全的做法大致如下:

  1. 将 Disk Drill 安装到单独的驱动器上,而不是受影响的那个。
  2. 连接你要从中恢复数据的 APFS 驱动器。
  3. 运行完整扫描。
  4. 在恢复之前使用预览,这样你可以查看文件是否确实完好。
  5. 将文件恢复到另一块磁盘。绝不要把恢复出来的文件写回同一个驱动器。

这个预览步骤很值得做。它能避免你浪费时间去恢复一堆损坏的文件。

如果驱动器无法挂载、频繁掉线,或者发出奇怪的噪音,我暂时不会开始运行修复工具。现在也先跳过 First Aid,因为修复尝试可能会向磁盘写入更改。先把重要文件取出来,然后再考虑修复驱动器。

如果这只是误删或 APFS 损坏,那么相比驱动器出现物理故障,你的恢复机会要大得多。

在“磁盘工具”中看到它,并不意味着驱动器是健康的,或者可以安全地进行修复。如果数据很重要,请先克隆或制作驱动器镜像,然后扫描克隆副本,无论您使用的是 Disk Drill 还是其他工具。直接在出现故障的 APFS 磁盘上操作,是把原本可恢复的情况变成一团糟的捷径。

不要点击“抹掉”“初始化”或任何提示让磁盘重新变得可用的选项。macOS 在提示重新格式化一个它能看到但无法理解的驱动器这件事上,往往随意得令人抓狂;如果你在意里面的内容,那正是完全错误的方向。

上面的评论关于先克隆是对的,但有一个经常被忽略的小区别:磁盘工具能看到物理驱动器,并不等于 macOS 能正确看到 APFS 容器和其中的卷。APFS 的结构是物理磁盘,然后是容器,再然后是里面的卷。有时驱动器本身状态还足以被识别,但 APFS 容器元数据已经损坏,或者卷无法解锁/挂载。在这种情况下,“修复磁盘”可能意味着对恢复软件需要读取的那部分元数据进行写入更改。

如果这是一个外置驱动器,我会先排除那些无聊但常见的变量,而且不做任何破坏性操作。试试不同的数据线、不同的 USB 端口;如果它是装在廉价硬盘盒里的裸盘,再试试别的硬盘盒或底座。有问题的 USB 桥接芯片会让 APFS 卷看起来比实际糟糕得多。不过,也别花一小时反复插拔。进行几次可控的尝试就够了。如果它一直断连,就假定这个驱动器状态不稳定并停止操作。

在扫描之前,我还想先确认一个细节:是否启用了 FileVault 或 APFS 加密。如果启用了,恢复工具需要密码或恢复密钥,否则结果通常只会是一堆无意义的数据。如果它曾被用作带有 APFS 快照的 Time Machine 磁盘,也是类似情况。你可能会看到多个卷或快照,而“丢失的文件”也许其实就在某个快照里,而不是需要做深度原始恢复。

对于一块不会咔哒响、也不会掉线的外置 HDD,我的顺序会是:

  1. 准备另一块至少和故障盘一样大的空磁盘。
  2. 如果你使用的软件支持,先对故障盘制作逐字节镜像或克隆。
  3. 把原始驱动器收起来。
  4. 扫描克隆/镜像。
  5. 恢复到第三个位置,不要恢复到克隆盘,也不要恢复到原盘。

这听起来像是小题大做,直到扫描进行了 10 小时,而原盘在半途中变得更糟。那时,克隆盘就是“再试一次”和“好吧,那已经是最后一次读到了”之间的区别。

Disk Drill 用来尝试恢复 APFS 没问题,尤其是当你可以预览到带有正确文件名和文件夹结构的真实文件时。但在预览能正确打开之前,我不会把任何恢复软件列出的文件清单当成证据。很多工具都能显示看起来很惊人的文件树,但里面的文件实际上可能是 0 字节、部分被覆盖,或者已经损坏。如果你得到的全是带有通用名称的“重建文件”,通常意味着 APFS 结构无法被读取,而工具是在根据文件签名做 carving。这依然可能救回照片、PDF、视频等文件,但结果不会那么干净。

我会避免在重要数据复制到别处之前使用“急救”。急救是修复工具,不是恢复工具。有时它有效。有时它会把文件系统“修复”成一个可以挂载的状态,但与此同时已经丢弃了你本来想恢复的那些损坏引用。

如果驱动器发出咔哒声、在扫描过程中消失、出现大量读取错误,或者连列出基本信息都要花很久,那么软件恢复就不是第一步该做的事了。这时候找专业实验室就开始变得合理了,即使价格会让人心痛。如果数据可以替代,那就扫描克隆盘,看看能恢复出什么。如果数据无法替代,那么每一次自己动手尝试都是一种权衡。

如果安全操作,预计这个过程会很无聊而且很慢。APFS 恢复通常不是那种“一键修复,一切都回来”的情况。最好的情况是,目录结构可读,你能找回文件夹和文件名。更糟的情况是,你只得到一堆雕刻恢复出来的文件,而且名称丢失。这两种都可能算是“成功”,但结果差别非常大。

这里有一个人们经常搞错的小问题,就是给错误的层级做镜像。对于 APFS,如果工具给你选择,不要只给以前能挂载的那个卷做镜像。尽可能给整个物理设备做镜像,因为 APFS 容器和卷元数据都很重要。如果你只捕获一个可见卷,可能会遗漏恢复程序重建文件树所需要的关键结构。用“磁盘工具”的说法来说,确保已启用“显示所有设备”,这样你就能分别看到顶层设备、容器和各个卷。

我也会谨慎对待那些来自随机指南的终端修复方法。像 fsck_apfs、diskutil repairVolume 或强制挂载尝试这样的命令,在你修一个可随便折腾的磁盘时可能没问题,但如果是为了恢复数据,这不是我会首先尝试的。同样,也不要轻易尝试去“转换”、“重建”或“bless”任何东西。如果目标是数据优先,就把这块盘当作证据来对待:从它读取,从它复制,不要去改进它。

如果你想走图形界面路线,Disk Drill 算是个合理的选择,但我不会仅仅因为扫描结果看起来漂亮就付费。预览几种对你真正重要的文件:一个大视频、一份文档、一张照片,或者任何你最在意的内容。如果预览能正常打开,而且文件名和文件夹看起来正常,那比看到一个巨大的“可恢复”文件数量要更有意义。如果它只找到像 JPEG0001 这种通用命名的结果,那也可能仍然有用,但要把预期放低一些。

还有,别忘了那个很无聊的目标存储问题:你需要有空间存放镜像,还要有空间存放恢复出来的文件。一块 2 TB 的故障硬盘,很可能需要一个 2 TB 的克隆目标盘,再加另一块盘来存放恢复数据。很多人开始扫描、找到文件之后,才意识到自己根本没有安全的地方可存放它们。在接触坏盘之前先把这件事安排好,可以避免很多不必要的额外读取。