「系统数据」是剩余项,不是一个类别
macOS 会把能归类的内容分到「应用程序」「文稿」「照片」「音乐」等等。凡是归不了类的,都落进同一块。旧版本把它叫作「其他」。它不是系统文件夹,也没有受保护,而且其中很多根本不属于操作系统 —— 在开发者的 Mac 上,大部分是你自己的开发工具。
数字为什么从来对不上
有三件事让访达显示的数字与你实际能释放的不一样。 可清除空间 被算作已用,但 macOS 认为它可回收,因此不会让你直接删除。 仅在云端的 iCloud 文件 按完整大小计算,尽管它们并不占用空间。还有 APFS 压缩与硬链接 意味着一个文件的逻辑大小和它的磁盘占用是两个数字 —— 访达给你看的是其中一个, du 给你看的是另一个。
先核对真实数字
在删除任何东西之前,先看看磁盘本身报告了什么,包括可清除空间:
diskutil info / | grep -E "Free|Available"
df -h /
里面到底有什么
十项,按它们通常的大小顺序排列。每一项都是你可以打开的真实文件夹。
Time Machine 本地快照
即使 Time Machine 已关闭,仍保存在内置硬盘上的每小时快照。通常是最大的一块,也最难找到,因为访达把它们报告为可清除空间而不是文件。
tmutil listlocalsnapshots /
Xcode DerivedData、归档和设备支持
构建中间文件和符号缓存。在一台正在使用的开发者 Mac 上,二十到六十 GB 很平常。
~/Library/Developer/Xcode/DerivedData
~/Library/Developer/Xcode/iOS DeviceSupport
iOS 模拟器运行环境
每个被模拟的 iOS 版本都有一份完整的系统镜像,再加上 Xcode 已无法使用的设备。
~/Library/Developer/CoreSimulator/Devices
iPhone 和 iPad 备份
每次备份一个带日期的文件夹,往往还有好几个属于你早就不用的手机。
~/Library/Application Support/MobileSync/Backup
Docker 的磁盘映像
一个文件装着所有镜像、容器和卷,只会变大,自己永远不会缩小。
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
或者一次看到全部十项及其真实数字
难的不是这份清单,而是把它们量出来。每一项都是不同的命令,而其中一半报告的大小还和访达对不上。Bytesweep 约十秒就能打开那条灰条,一键精简 Time Machine 快照,并把你清理的一切放进可在七天内撤销的还原点。
应用缓存和容器
Safari、Chrome、Spotify、Slack 以及每个沙盒应用。单个很小,加起来很大,而且几乎全都会重新生成。
~/Library/Caches
~/Library/Containers
邮件附件
「邮件」在本地缓存了多年的下载附件。
~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads
已删除应用的残留
多年前离开这台 Mac 的应用留下的支持文件、偏好设置和启动项。macOS 上没有任何机制会清除它们。
其实并不在本地的 iCloud 文件
仅在云端的文件却按本地计算。这就是「系统数据」有时会自己变小、有时又纹丝不动的原因。
开发者的包缓存
Homebrew、pip、npm、cargo 和 Gradle 各自都有一份按需重建的归档缓存。
brew cleanup -s
安全、需谨慎,以及别碰
可安全清除
应用缓存、构建产物、包管理器缓存、不可用的模拟器,以及早于你最近一次备份的 Time Machine 本地快照。这些要么会重新生成,要么在别处还有一份。
值得先看一眼
设备备份、你可能还要适配的模拟器运行环境、模型权重,以及归档的 Xcode 构建。它们可以重新获取,但很慢 —— 而你删掉的归档,会连同为那个版本的崩溃报告做符号化的能力一起带走。
绝不
位于 /System, /private/var/db中的任何内容、钥匙串,或者某个应用当前打开着的数据库。在现代 Mac 上系统卷是只读且经过签名的,因此其中大部分已经替你拒绝了 —— 但 ~/Library 并未受到保护,事故正是发生在那里。
把灰条拆成文件夹来看
Bytesweep 会为上面每一项点名、量出大小,并一键精简 Time Machine 快照。你清理的一切都会先进入还原点,因此七天内撤销只需一次点击。
相关内容: 如何在 Mac 上释放空间 · 磁盘空间分析工具
问题
我可以直接删掉「系统数据」吗?
没有什么可删的 —— 它是柱状图上的一个标签,不是文件夹。你删的是它里面一个个具体的东西,而其中一些是你的应用需要的文件。所以答案永远是「打开来看」,而不是「清空它」。
为什么我 Mac 上的系统数据有 150 GB?
在开发者的 Mac 上,通常的答案是 Xcode 加 Docker 加本地快照,三者相加很容易到这个数。在用于照片和邮件的 Mac 上,更常见的是本地快照加邮件附件加 iPhone 备份。
为什么我删了之后它又长回来?
因为里面大部分是缓存。清掉 Xcode 的 DerivedData 能换来 40 GB,直到下一次构建。本地快照一小时之内就会回来。这不是故障 —— 那些文件夹本来就是干这个的。重要的是把总量控制在你能接受的范围内。
重装 macOS 能解决吗?
能清空它,代价是一整天。这个页面上的所有内容都可以不重装就清理掉,而且重装也阻止不了它回来,因为同样的工具会重建同样的缓存。
可清除空间真的是可用的吗?
基本上是。macOS 会在有东西需要空间时释放它,所以即使访达说你没有空间,一次大的复制通常也能成功。但如果某个工具因为预先检查可用空间而拒绝启动,它帮不了你;而且除了你自己删掉快照,也没法按需释放它。
