macOS 与系统数据

我在 Mac 上删除了文件,存储空间却没变:原因和解决方法

删了文件,空间却没回来?常见原因有:废纸篓未清倒、应用仍打开着文件、本地快照、APFS 克隆,以及储存空间数字更新滞后。

阅读约需 6 分钟MoreRoom 团队,Yando Pte. Ltd.以 Markdown 格式查看本页

要点速览

  • 只有当没有任何东西再引用文件的数据时,删除它才会释放空间:不在废纸篓里,没有被应用打开,不在快照中,也不是克隆。
  • 最常见的原因很简单:废纸篓(或其他驱动器上的废纸篓)还没有清倒。
  • 如果文件在被删除时仍被某个应用打开,它会一直占用空间,直到该应用将其关闭;lsof +L1 可以列出这类文件。
  • “时间机器”本地快照可能把已删除的数据保留最多 24 小时,而删除 APFS 克隆的其中一个副本几乎释放不了空间。
  • 储存空间设置可能更新滞后,所以请用访达的“显示简介”或 df -h / 来获取当前数字。

如何在 Mac 上删除文件后找回空间

  1. 清倒废纸篓. 打开废纸篓,选取“访达 › 清倒废纸篓”,同时保持外置驱动器处于连接状态,让它们的废纸篓也一并清倒。
  2. 找出仍被打开的已删除文件. 在“终端”中运行 lsof +L1,或运行 sudo lsof +L1 以包括所有用户。退出大文件旁列出的应用,或重新启动 Mac。
  3. 检查本地快照. 运行 tmutil listlocalsnapshots /。“时间机器”快照会在 24 小时后过期;如果 macOS 需要空间,会更早将其移除。
  4. 检查克隆和其他副本. 如果你删除的是在同一驱动器上用访达制作的副本,原文件仍然持有共享的数据。只有所有副本都删除后,空间才会回来。
  5. 检查应用内的废纸篓. 清空“照片”和“备忘录”中的“最近删除”、“邮件”中的已删除邮件,以及你在其中删除过内容的其他应用里的废纸篓或回收站。
  6. 用当前数字重新测量. 对启动磁盘使用访达的“显示简介”,或在“终端”中运行 df -h /,因为储存空间设置可能需要一段时间才能重新计算。

在 Mac 上删除文件时,只有当没有任何东西再引用它的数据时,空间才会被释放。常见的原因依次是:文件还在废纸篓里;某个应用仍打开着它;某个“时间机器”本地快照仍保留着它;或者它是一个与另一个副本共享数据的 APFS 克隆。此外,储存空间设置也可能需要一段时间才会显示变化。请按顺序逐项检查下面的内容;大多数情况在前两步就能解决。

从删除文件到找回空间之间的四项检查

1. 文件还在废纸篓里

把文件移到废纸篓并不会释放空间,只是把文件移到了同一驱动器上的一个隐藏文件夹中。选取访达 › 清倒废纸篓后,空间才会回来。

每个驱动器都有自己的废纸篓:

  • 启动磁盘使用个人文件夹中的 ~/.Trash。
  • 外置驱动器和其他驱动器在根目录使用一个隐藏的 .Trashes 文件夹,每个用户一个子文件夹。

访达把它们合并显示为一个废纸篓,并会一并清倒所有已连接驱动器的废纸篓。如果你在外置驱动器上删除了文件,随后拔掉了它,那么它的废纸篓并没有被清倒;请重新连接,再清倒一次废纸篓。如果打开了自动清倒废纸篓,访达只会抹掉在废纸篓中已超过 30 天的项目(Apple 支持)。

应用也可能有自己的回收区。“照片”和“备忘录”会把删除的项目保留在最近删除中,“邮件”则会把它们保留在已删除邮件所在的邮箱中,直到你将其抹掉。

2. 某个应用仍打开着这个文件

在 macOS 上,和其他 Unix 系统一样,被删除的文件会立即从访达中消失,但只要还有应用打开着它,它的数据就会留在磁盘上。这有时被称为幽灵空间。这种情况在日志文件、视频和音频项目、虚拟机和数据库中很常见。

要列出仍处于打开状态的已删除文件,请运行:

lsof +L1

+L1 让 lsof 列出链接数小于 1 的打开文件,也就是在任何文件夹中都已经没有名称的文件。COMMAND 和 PID 列指出是哪个应用,SIZE/OFF 列给出以字节为单位的大小。不加 sudo 时,你只能看到自己的应用;sudo lsof +L1 会包括系统进程,并要求输入你的密码。该命令只读取不修改,可以放心运行。

要释放空间,请退出列出的应用;如果是后台进程,则重新启动 Mac。系统服务留下的小条目是正常的,不值得追查;请留意那些体积大的项目。

3. 本地快照仍保留着这些数据

如果设置了“时间机器”,macOS 大约每小时拍一次本地快照,并保留 24 小时(Apple 支持)。快照会保留磁盘当时的状态,所以在快照拍摄之后删除的文件,会一直留在快照中,直到快照过期。用以下命令列出快照:

tmutil listlocalsnapshots /

通常你只需等待即可。Apple 表示,Mac 会把快照占用的空间计为可用空间,并在下载、拷贝或安装需要空间时移除快照。如果你需要立即获得空间,我们的“时间机器”本地快照指南解释了如何精简或删除快照,以及这样做的代价。其他备份应用(例如 Carbon Copy Cloner)也可能按自己的保留规则保存快照。

4. 可清除空间与不同的计算方式

访达和储存空间设置报告的是可用空间,其中包括可清除空间:快照和部分缓存这类 macOS 会自行移除的数据。“终端”中的 df 只报告当前真正空闲的空间。如果你删除的文件仍被快照保留,访达可能会显示可用空间增加,而 df 没有任何变化。请用同一个工具前后对比:在删除前后都查看访达的“显示简介”,或者都运行 df -h /,而不要拿一个去和另一个比。

5. 文件是 APFS 克隆

在 APFS 上,在同一宗卷上用访达拷贝文件,或用文件 › 复制来复制文件,通常会创建一个克隆。克隆和原文件指向相同的数据块;只有之后发生改动的部分才会占用额外空间。Apple 在 About Apple File System 中对此有说明。

两个克隆共享相同的数据块,所以删除其中一个副本几乎释放不了空间

因此,如果你删除两个克隆中的一个,只会释放两者之间不同的那些数据块。只有最后一个副本被删除后,空间才会回来。du 等工具会把每个克隆都按完整大小计算,这就是为什么文件夹的总和可能超过磁盘实际使用的空间。我们的重复文件与 APFS 克隆指南解释了如何区分它们。

6. 储存空间设置还没跟上

系统设置 › 通用 › 储存空间在后台计算数字,可能会有滞后。要获取当前数字,可以使用以下任一方法:

  • 在访达中选择启动磁盘,然后选取文件 › 显示简介。它显示的“可用”包括可清除空间。
  • 在“终端”中运行 df -h /。Avail 列显示当前的空闲空间,不包括可清除空间。

关闭后重新打开储存空间设置,或等待几分钟,通常就能让数字恢复一致。

7. iCloud 与“优化 Mac 储存空间”

打开 iCloud 云盘和优化 Mac 储存空间后,有些文件只存在于 iCloud 中,本机并没有副本。删除这些文件释放的是 iCloud 储存空间,而不是 Mac 上的空间。反过来也常让人措手不及:在 Mac 上删除一个已同步的文件,也会把它从 iCloud 和你的其他设备上删除。

如果你想释放本地空间、同时保留文件,请改为按住 Control 键点按该文件,然后选取移除下载(Apple 支持)。详情请参阅“移除下载”与删除的区别。

速查表

症状 可能的原因 解决方法
完全没有变化 废纸篓未清倒 访达 › 清倒废纸篓,并连接好驱动器
大文件不见了,空间却没回来 应用仍打开着它 lsof +L1,然后退出应用或重新启动
一天后空间才回来 本地快照 等待,或精简快照
删除了“重复文件”,没有变化 APFS 克隆 所有副本都删除后空间才会回来
访达与 df 不一致 可清除空间 用同一个工具前后对比
储存空间设置看起来没更新 后台重新计算 使用“显示简介”或 df -h /

MoreRoom 能帮上什么忙

MoreRoom 免费版包含“幽灵空间”功能:它会找出被已删除、但仍被某个应用打开着的文件所占用的空间,显示是哪个应用占着它,并通过退出该应用把空间找回来。它的系统数据视图会显示本地快照以及 macOS 将自行清除的内容,并解释为什么访达和 df 的数字对不上。你在 MoreRoom 中移除的任何内容都会先进入废纸篓,并可撤销。MoreRoom 不会删除快照,也不会删除重复文件;对于快照,请使用 tmutil 或“磁盘工具”。如果想在不删除的情况下从相同的副本中收回空间,可以使用它的“免删除释放”屏幕,让这些副本以 APFS 克隆的形式共享空间(Pro)。

常见问题

为什么删除文件后 Mac 存储空间仍然是满的?

这些文件通常还在废纸篓里、被某个应用打开着、被“时间机器”本地快照保留,或者通过 APFS 克隆与另一个副本共享数据。也可能是储存空间设置还没有重新计算。

在 Mac 上删除文件后,要多久才能释放空间?

清倒废纸篓、且没有应用打开该文件后,空间会立即释放,除非某个本地快照仍引用它。“时间机器”快照会在 24 小时内过期;如果 macOS 需要空间,会更早移除。

重新启动 Mac 能释放已删除文件占用的空间吗?

能释放应用仍打开着的文件所占用的空间,也会释放交换文件。但重新启动本身不会清倒废纸篓,也不会移除本地快照。

为什么删除重复文件没有释放任何空间?

在 APFS 上,用访达在同一宗卷上制作的副本通常是一个与原文件共享数据的克隆。删除两者之一,只会释放发生过变化的那部分数据。

外置驱动器上的废纸篓需要单独清倒吗?

不需要,只要清倒废纸篓时驱动器处于连接状态即可。每个驱动器都有自己隐藏的废纸篓文件夹,访达会把所有已连接驱动器的废纸篓一并清倒。

本指南提到的文件夹