恢复已删除的 APFS 文件是否为时已晚?

我从 Mac 上的 APFS 驱动器中删除了一些重要文件,等我意识到时已经太晚了,因为我仍然需要它们。我不确定 TRIM、快照或最近的磁盘使用是否会让 APFS 文件恢复变得不可能。在我冒着覆盖任何内容的风险之前,我应该尝试哪些步骤?

用户 1

你可能仍然有机会,但主要取决于两件事:删除之后该硬盘是否又写入过任何数据,以及它是 SSD 还是机械硬盘。

最安全的做法是现在立刻停止使用那块硬盘。不要往里面保存任何东西,不要在上面安装恢复工具,暂时也尽量不要运行修复工具。被删除的文件通常并不会立刻真正消失,但新的写入可能会覆盖它们原本占用的空间。

如果你是在“磁盘工具”里格式化的,这也不自动意味着数据已经被销毁。快速格式化通常只是重建文件系统结构,而不是抹掉旧数据的每一个比特。如果你之后没有往里面复制一大堆新内容,仍然有可能恢复。

SSD 的情况更棘手,尤其是启用了 TRIM 的 Mac 内置 SSD。一旦 TRIM 清除了那些已删除的数据块,普通恢复软件就无法把它们找回。外置 SSD 的情况则稍微不那么确定,因为 TRIM 是否生效取决于硬盘盒和连接类型。有些会传递 TRIM 命令,有些不会。所以外置 SSD 有时会比你预期的更容易恢复,但前提是你要尽快停止使用它。

我用 Disk Drill 的效果最好。

对我来说,基本上是这样操作的:

  1. 把 Disk Drill 安装到另一块硬盘上,不要装在你要恢复数据的那块盘上。
  2. 连接丢失文件的 APFS 硬盘。
  3. 当 macOS 提示时,授予它“完全磁盘访问权限”。
  4. 扫描整个 APFS 卷,而不只是随便选一个文件夹。
  5. 先让完整扫描结束,再去恢复文件。
  6. 使用预览功能确认恢复出来的文件确实能够打开。
  7. 把恢复出来的文件保存到另一块硬盘。

对我来说,一个很大的优点是它保留了很多原始文件夹和文件名。这比听起来更重要,因为要在成千上万个随机命名的文件里整理筛选,是一件非常痛苦的事。

如果你有 Time Machine 备份,先检查那个。如果没有,恢复软件大概就是下一步比较合理的选择。另外也检查一下 APFS 快照。即使没有插上 Time Machine 硬盘,macOS 有时也会保留本地快照。它们可能不存在,但在认定文件已经丢失之前,值得先看一眼。

在恢复任何重要内容之前,我会避免使用“磁盘工具”的“急救”。我的原则是先恢复,后修复。修复对受损的文件系统可能有帮助,但它也可能会更改磁盘上的内容,而这恰恰不是你在恢复之前想看到的。

如果硬盘无法挂载、随机断开连接、发出咔哒声、扫描时卡死,或者表现出物理上不稳定的迹象,我会停止继续折腾软件,改去联系数据恢复实验室。很多靠谱的实验室会提供免费检测,而且不少都是“不恢复不收费”。费用会更高一些,但如果硬盘本身正在故障,这是更安全的路线。

缺少的关键信息是,这是否是你的启动磁盘,以及是否启用了 FileVault。若它是 Mac 的内部 SSD 且启用了 FileVault,并且你在删除文件后还继续使用这台 Mac,我会把预期放得很低。APFS 加上 SSD 的 TRIM 会很快把已删除变成实际上无法恢复,而且加密也意味着你无法像过去在人们使用老式机械硬盘时那样,从残留数据中挖出有用内容。

我同意停止使用它这一建议,但我会更严格一些:如果丢失的文件在内部硬盘上,就把 Mac 关机。不要下载恢复应用,不要更新 macOS,也不要让照片或 iCloud 同步在后台持续读写。如果你还有另一台 Mac,目标磁盘模式或外部启动可以减少新的写入,不过较新的 Apple 芯片 Mac 让这件事不像以前那么简单。

在扫描之前,我会先检查那些看起来普通却有时能省下数小时的地方:创建这些文件的应用中的最近删除、iCloud Drive 网页恢复、Time Machine,以及本地快照。如果存在快照,通常会比恢复软件更干净,因为你拿回的是原始文件,而不是猜测重建出来的内容。Disk Drill 或类似工具在那之后值得一试,但我会把预览结果当作判断标准。如果它无法正确预览文件,那么即使恢复出一个文件名正确的文件,你拿到的也可能仍然是垃圾。

不要再把硬盘当成做实验的地方。

上面关于 TRIM 的观点是对的,但我看到人们犯的更大错误是,直接对原始磁盘运行三种不同的恢复应用,然后再疑惑到底是哪一个把情况弄得更糟。如果这些文件很重要,先保留当前状态。即使当前状态已经很糟,也仍然好过你在四处尝试时亲手改坏后的状态。

如果这是外置硬盘,我会先在扫描之前把整盘做成完整的磁盘映像,或者克隆到另一块硬盘上。不是用 Finder 复制可见文件,而是对整个设备或 APFS 容器做真正的块级映像/克隆。如果你的恢复工具支持,就扫描这个映像。这样一来,如果第一次扫描毫无用处,你就有一个可回退的起点,而且也能避免对一块可能不稳定的硬盘连续数小时反复读取。

如果这是 Mac 的内置 SSD,情况就更麻烦了。正常启动系统本身就已经在写入日志、缓存、Spotlight 数据、iCloud 变更、浏览器垃圾文件,以及谁知道还有什么。就算你说 我只是打开 Safari 下载了一个工具 ,这仍然是在进行磁盘活动。把它关机,然后通过另一台 Mac、恢复模式,或者如果你确实懂的话,用外部启动盘来操作。如果你不懂,这往往就是该花钱找店家的时候,因为这可能比你一边学一边毁掉证据更便宜。

关于快照还有个小提醒:不要因为 APFS 支持快照就想当然地认为快照一定在那里。APFS 可以有快照,但这并不意味着你丢失的文件夹就安全地躺在某个快照里。Time Machine 本地快照才是常见且真正有用的情况。如果它们存在,先用它们,因为那是恢复,不是猜测。而恢复软件更像是考古。

Disk Drill 可以试试,但我会把它当作扫描工具,而不是把它当成一切都能恢复的证明。预览比文件列表更重要。一个能恢复出文件名但预览损坏的结果,往往只是个让人安心的假象。对于视频、虚拟机、照片图库、数据库和项目文件这类较大的文件尤其如此,因为缺失一个片段就可能让整个文件完全无法使用。

人们还常常忘记,所谓 已删除的文件 可能并不是普通文件。如果你丢失的东西是在 Photos、Notes、Mail、Lightroom、Final Cut、同步文件夹,或者某个包文件里,那么最佳恢复路径可能是在那个应用自己的废纸篓、备份、缓存、版本历史,或者云恢复页面里。文件恢复工具可能只能找到碎片,而应用本身却可能还保留着一份干净的副本或一条数据库记录。

我的建议顺序是:

  1. 停止使用这台 Mac,或者断开外置硬盘。
  2. 检查应用专属的 最近删除 区域以及云端恢复。
  3. 检查 Time Machine 和本地快照。
  4. 如果没有可用的干净恢复源,在可行的情况下先为硬盘做映像/克隆。
  5. 之后再扫描映像或原盘。
  6. 把恢复出的文件保存到一块完全不同的磁盘。
  7. 在庆祝之前,先打开恢复出来的文件检查。

对于内置 Apple SSD 上已删除、并且之后又使用了一段时间的文件,我会把预期放低。对于外置 APFS 机械硬盘,或者没有执行 TRIM 的外置 SSD,成功恢复的几率可能会高得多。同样是文件系统,恢复情境却可能完全不同。

在扫描任何内容之前,先检查同一台 Mac 的同一用户账户中的废纸篓,尤其是当这些文件原本位于外接驱动器上时。macOS 会让废纸篓看起来像是一个地方,但每个卷都可能有自己隐藏的废纸篓文件夹。如果你是从外接 APFS 磁盘删除文件,然后又把它插到另一台 Mac 或另一个用户账户中,当你查看当前废纸篓时,它可能看起来像是“消失了”,但实际上只是没有显示出来。

其他回复关于停止写入的说法是对的,但我会把“已删除”分成几种情况,因为它们并不相同。如果你只是把文件拖到废纸篓里且还没有清空,恢复通常只是把它们还原即可。如果你已经清空了废纸篓、使用了 Command-Option-Delete、在 Terminal 中用 rm 删除,或者被某个应用清理掉了,那就进入真正的数据恢复范畴了。如果驱动器是内置 SSD,并且 Mac 从那之后一直在正常运行,那么成功几率会迅速下降。Disk Drill、PhotoRec、R-Studio 等工具无法恢复那些 SSD 已经被告知可以丢弃的块。

对于快照,不要只检查 Time Machine 应用的界面。你可以打开 Terminal,并对启动卷运行类似 tmutil listlocalsnapshots / 的命令。对于另一个已挂载的卷,路径很重要。如果存在快照,从快照恢复远比文件雕刻要好得多。如果没有快照,APFS 也没有什么神奇的后备机制。APFS 很现代,并不意味着它会为每个已删除文件保留一份安全副本。

一个小提醒:不要让恢复程序去“修复”文件夹结构,也不要把恢复出来的文件保存回同一个 APFS 驱动器。把数据写回同一块磁盘,正是人们覆盖自己正试图抢救的数据的常见方式。应恢复到另一块独立磁盘上,然后在那里测试文件。对于文档和照片,能预览通常是个不错的迹象。对于资源库、虚拟机、视频项目、数据库和应用程序包,仅仅能打开顶层文件还不够,因为捆绑包中的部分内容仍可能缺失。

所以,不,并不一定已经太晚了。但如果这是带有 TRIM 的 Mac 内置 SSD,并且删除后还在正常使用,那么应把软件恢复视为一次低成功率的尝试,而不是计划。如果这是外接机械硬盘,或者是一个没有传递 TRIM 的外接 SSD,那么如果你现在立刻停止再去操作它,仍然可能有相当不错的机会。