我不小心清空了 Mac 上的废纸篓,后来发现一些重要文件原来在 HFS/HFS+ 驱动器上。此后我还没有往该驱动器保存太多内容,但我担心已删除的数据可能会被覆盖。在把情况弄得更糟之前,有哪些最安全的 HFS 恢复选项或工具可以尝试?
我会谨慎对待突然变得无法读取的 HFS 或 HFS+ 驱动器。通常仍然有恢复的可能,尤其是在文件被删除、清空废纸篓、驱动器被快速格式化,或者 macOS 在更新后出错的情况下。但通常真正让人吃亏的是,在把数据复制到安全位置之前,就先随便运行各种“修复”步骤。
第一件事:停止向该驱动器写入任何内容。不要往里面保存文件,不要重新格式化它,如果这些文件很重要,也先不要运行“急救”。被删除的数据可能仍然还在那里,但每一次新的写入,都会更有可能覆盖旧文件内容。
之后,检查驱动器本身是否正在故障。对于 HDD,可以用 Disk Drill 或 DriveDx 之类的工具查看 SMART 状态。如果你看到大量坏扇区或严重的 SMART 警告,就不要把它当作普通的软件问题处理。如果它仍然可以读取,先制作磁盘映像,然后扫描映像,而不是一遍又一遍地反复折腾原始驱动器。
如果驱动器看起来健康且能正常显示,那么我会直接转向恢复软件。对于 HFS 文件恢复,Disk Drill 通常是我会先尝试的工具,因为它支持 HFS/HFS+,可用于 Mac 的内部和外部驱动器,而且不需要太多技术设置。
基本流程很简单:
- 打开 Disk Drill 并选择 HFS/HFS+ 驱动器。
- 运行 搜索丢失的数据。对于外部驱动器,Universal Scan 通常是最安全的起点。
- 等待扫描完成。
- 在恢复之前预览所有重要内容。
- 将恢复出的文件保存到其他驱动器,而不是原始驱动器。
如果这样还是找不到文件,那就要看实际发生了什么。如果整个 HFS 分区丢失了,TestDisk 可能会有帮助,但如果你习惯了普通的 Mac 应用,它并不算友好,因为它是基于文本的。如果你有最近的 Time Machine 备份,先用那个。通常这是最干净、风险最低的选择。
快速格式化和清空废纸篓的情况通常是可以恢复的,因为文件内容通常不会被立即擦除。目录项或引用可能已经消失,但数据仍然可能存在,直到有其他内容写入并覆盖它。
如果驱动器在“磁盘工具”中都无法显示、总是断开连接、发出咔嗒声或摩擦声,或者恢复工具因为读取错误而不断失败,我就会停止自行尝试。这更像是硬件故障,而不是普通的 HFS 问题。在这种情况下,反复通电可能会让情况更糟,所以通常更明智的做法是交给专业的数据恢复实验室。
如果这是在启用了 TRIM 的 SSD 上,恢复成功的可能性可能已经比在机械硬盘上低得多。Mike 提出的“停止向其中写入数据”的建议仍然是正确的做法,但如果这些文件对业务至关重要,就不要浪费几天时间扫描原始磁盘。先克隆它或送去专业处理,以免把还有可能变成完全没戏。
不要在同一块硬盘上安装恢复软件,也不要把任何内容恢复回这块硬盘。在清空废纸篓后,这很容易犯错,尤其是当这个 HFS+ 卷是你唯一的备用磁盘时。Mike 关于停止写入的说法是对的,但我会更严格一些:如果可以的话,使用另一台 Mac 或从另一个卷启动,然后以只读方式扫描这块 HFS 硬盘,并把结果保存到别的地方。如果磁盘状态健康,Disk Drill 作为第一次扫描是可以的,但不要只根据文件名和文件夹来判断恢复结果。对于 HFS/HFS+,即使文件内容仍然可以恢复,原始路径也可能已经丢失,所以也要检查预览和“丢失文件”的结果。如果是启用了 TRIM 的 SSD,那就降低预期。如果是普通的外置 HDD,而且你确实还没有往里面写入数据,那你仍然有相当不错的机会。
如果 macOS 仍在正常自动挂载该驱动器,请将第一次挂载视为风险的一部分,而不只是之后你运行的任何恢复应用。Finder、Spotlight、缩略图、隐藏文件和索引都可能接触该卷。通常这些写入都很小,但当你试图保存已删除文件时,“小”并不等于“安全”。
我同意上面关于不要恢复回同一块 HFS+ 磁盘的建议。我还会更进一步,尽量完全不要在 Finder 中浏览该驱动器。如果可以,只在你准备为其制作镜像或扫描时再连接它,并关闭任何可能为其建立索引的功能。对于外置磁盘,完整地逐字节制作到另一块驱动器的镜像是更稳妥的做法,尤其是在原盘较旧或发出奇怪噪音的情况下。然后你可以对该镜像使用 Disk Drill 或其他恢复工具,而不必反复折腾原始磁盘。
HFS+ 有个烦人的细节,就是文件内容和文件夹记录并不是同一回事。清空废纸篓后,你可能能找回数据,但文件名会变成乱码,或者丢失原始文件夹结构。所以不要以为“没有文件名”就等于“没有文件”。按文件类型预览,如果工具支持的话按大小或日期排序,并且只恢复到单独的磁盘上。如果丢失文件的价值高于实验室恢复的成本,那么在一次谨慎的镜像尝试之后就该停止,而不是在同一块物理驱动器上做五种不同的扫描。


