Apple 所说的系统数据
打开苹果菜单,然后依次选择“系统设置”“通用”“储存空间”。条上每一段彩色部分都是有自己规则的类别:应用程序、文稿、照片、邮件、信息、iCloud 云盘等。系统数据是剩下的部分。Apple 针对当前 macOS 的指南说,它“包含不属于此处所列类别的文件”,而且在那个窗口里“无法管理此类别的内容”。
同一份指南也说明了这些文件是什么:“日志文件、缓存、VM 文件和其他运行时系统资源”,以及“临时文件、字体、App 支持文件和插件”。它还补充,这个类别“会随 Mac 当前状态而改变大小”,其中的内容要“通过 Finder 或创建这些内容的第三方 App 来管理”。早期的 macOS 把同一个类别叫作“其他”。
所以系统数据不是一个文件夹,也没有某一样东西可以删掉。它是 macOS 用减法算出来的总数,所以即使你什么都没动,它也会变。 为什么系统数据的数字总是对不上 一文详细讲解了这笔账。
来源: Apple:在 Mac 上更改“储存空间”设置 · Apple:释放 Mac 上的储存空间
三十秒自查
在测量任何东西之前,先做三件不花力气的事。它们常常会让条自己变化,也能告诉你这一页的其余部分是否还有必要。
在“系统设置”“通用”“储存空间”里把指针停在灰色条上,记下它的大小。这是之后用来对比的数字。
清空废纸篓。里面的东西仍然算作已用空间;顺便也看一眼 Finder 的“下载”文件夹。
重新启动。重启会删掉交换文件,给 macOS 一个释放可清除空间的机会,之后条会重新计算。
同一屏幕上的建议(储存在 iCloud、移除已观看的影片、自动清空废纸篓)作用于文稿、邮件、废纸篓和视频。它们碰不到灰色条。做完这三步系统数据仍是最大的一块,就接着往下读。
已经不属于系统数据的内容
很多指南仍把 iPhone 备份和邮件列为常见元凶。在当前的 macOS 上,它们都有自己的一行,所以已经不能解释一大段灰色了:
iPhone 和 iPad 备份以及下载的 iOS 固件计入“iOS 文件”。
邮件的邮件和附件计入“邮件”。
信息里的对话及其附件计入“信息”。
macOS 本身也单独占一行,它位于一个你无法更改的、已封装的只读宗卷上。 已封装的系统宗卷 一文解释了这要占用多少空间。
如果系统数据是条上最大的一段,答案几乎总在你的用户资源库、某个开发工具的文件夹,或者 macOS 为自己保留的文件里。
访达、系统设置和命令行各自用不同的方式计算可用空间。删除任何东西之前,先直接问磁盘:
diskutil info / | grep "Free Space"
df -h /System/Volumes/Data
如果访达显示的可用空间比这两条命令多出不少,差额就是可清除空间:macOS 认为可以收回、只有在有东西需要时才归还的空间。 Mac 上的可清除空间,以及如何让 macOS 真正释放它 一文讲的正是这种情况。
然后列出本地快照:
tmutil listlocalsnapshots /
以 com.apple.TimeMachine 开头的名字是 Time Machine 每小时的快照。以 com.apple.os.update 开头的属于 macOS 及其更新,交给 macOS 处理。
找出是什么占满了它
这两条命令会列出最大的文件夹,最大的排在最后。第一条需要输入密码,而且“终端”需要“完全磁盘访问权限”(系统设置、隐私与安全性),否则 macOS 会对它隐藏磁盘的一部分。
sudo du -xh -d 1 /System/Volumes/Data 2>/dev/null | sort -h | tail -20
du -xh -d 1 ~/Library 2>/dev/null | sort -h | tail -15
对排在最前面的文件夹,例如 ~/Library/Caches 或 ~/Library/Developer,再运行一次第二条命令,直到看到你认识的东西。然后到下面的表格里查找。
不用终端的办法
在 Finder 里打开“前往”菜单,按住 Option 键并选择“资源库”。按下 Command-J,勾选“计算所有大小”,再按大小给窗口排序。最大的几个文件夹和命令打印出来的一样,只有一个缺口:Finder 看不到快照、交换文件和 /private 下的隐藏文件夹,这些仍然要靠命令行。
里面有什么,逐项来看
系统数据很大时通常由哪些东西组成、每一部分在哪里,以及安全的删除方法。Apple 没有公布哪个文件夹归入哪一行,所以先测量,再动手。
开发工具有各自的指南,列出了每个文件夹: Xcode 存储空间 , Docker 磁盘空间 , AI 模型存放在哪里 和 一张表列出所有开发缓存 。
关于 Time Machine 快照
Apple 表示,Time Machine 大约每小时存储一次快照,每个保留 24 小时,另外保留一份最近一次成功备份的快照,直到需要空间为止,并把快照占用的空间算作可用空间。所以它们不应该让条上已用的部分变大,但它们通常是访达和 df 对可用空间看法不一的原因。当安装器或工具因空间不足无法启动时再删除它们,不要当成例行公事。如果 Time Machine 是你唯一的备份,最新的快照可能是你今天修改的某个文件的唯一副本。
Time Machine 本地快照 和 APFS 快照是什么 有更深入的讲解。来源: Apple:关于 Time Machine 本地快照 。
不要动的东西
绝不
系统宗卷,以及系统自己的数据库。前者 macOS 本来就拒绝修改,后者保存着用户账户和统一日志等内容。
/System
/private/var/db
你的钥匙串,里面存着你的密码:
~/Library/Keychains
另外不要动交换文件、正在打开的应用容器里的任何内容,以及邮件和照片的资料库,这些只应该由邮件和照片来修改。
值得先看一眼
Xcode 的 Archives 保存着你发布过的构建,以及读取它们崩溃报告所需的符号,没有任何东西能重建它们。你自己创建或微调的模型无法再次下载。Docker 宗卷里可能有数据库。
清理类应用在你的用户资源库里工作,而 macOS 并不保护那里。粗心的清理正是在那里造成损害,所以无论用什么工具,都要确保每一项删除前能看到、删除后能找回。
为什么它又会变大
里面大部分是缓存,而缓存一用就会再满。DerivedData 下次构建就回来了。Time Machine 一小时内会再拍一个快照。下次内存不足时交换文件又会变大。Homebrew 下次升级时会重新下载。这些都不是故障,也正因如此,“清理系统数据”永远不会一劳永逸。
有用的做法是知道你自己的 Mac 上哪两三个文件夹最大,每隔几个月检查一次,而不是一次全部清空。储存空间条看起来满了、但仍有可清除空间可以归还的 Mac,保持原样也可能没问题。 交换文件与睡眠映像 一文讲的是取决于内存而不是磁盘的那两个文件。
Bytesweep 能帮上忙的地方
本页的所有操作都可以免费用“终端”和访达完成。Bytesweep 省去的是命令和猜测。
“存储”扫描会测量磁盘上的文件夹,包括资源库这样的隐藏文件夹,让你把那段灰色看成一个个有名字、有大小的文件夹。
“清理”会列出缓存、日志、临时文件和开发数据及其位置,并给每一项评级:安全、需先检查或保留。只有安全的项目会被预先勾选。
它清理的内容会先移到同一磁盘上的还原点,所以 7 天内都能放回去。
删除 Time Machine 本地快照、清理 Homebrew 和 Docker 都交给 macOS 和这些工具自己的命令执行,因此无法撤销。Bytesweep 会在你运行之前标出它们。
问题
我可以直接删掉「系统数据」吗? 不能整体删除。系统数据是 macOS 在储存空间条上画出的一个总数,背后并没有单独一个文件夹。你删除的是其中的一件件东西,其中有些是应用需要的文件。所以答案永远是先看清楚,而不是一键清空。
系统数据和“其他”是一回事吗? 是的。更早的 macOS 把同一个剩余类别叫作“其他”。之后有些内容有了自己的类别,比如 iPhone 备份归入“iOS 文件”。
为什么我的 Mac 上系统数据这么大? 用来做开发的 Mac 上,通常是 Xcode、模拟器、Docker 和软件包缓存。在其他 Mac 上,更常见的是应用缓存、应用从不清理的数据,以及已删除应用的残留。“找出是什么占满了它”里的两条命令会告诉你自己的 Mac 属于哪种情况。
多大的系统数据算正常?什么时候该停手? Apple 没有公布数字,合适的大小取决于这台 Mac 用来做什么。装了 Xcode、Docker 或本地 AI 模型的 Mac,会比只收邮件和上网的 Mac 多出几十 GB,这不是故障。有用的标准不是总量,而是里面那些大文件夹是否属于你认识并且还在用的东西。是,就到此为止。如果最大的那个属于几个月前已删除的工具,那就是该清理的那个。
为什么它自己变小了? Time Machine 快照 24 小时后过期,有东西需要空间时 macOS 会归还可清除空间,重新启动会删除交换文件。而且类别会在后台重新计算,所以即使没有任何文件变化,那条也可能变化。
重装 macOS 能解决吗? 不会。重新安装只替换系统宗卷,数据宗卷原封不动,而系统数据几乎都在数据宗卷上。只有抹掉 Mac 从头开始才能清空它,之后同样的应用还会重新生成同样的缓存。
可清除空间真的是可用的吗? 大部分是。有东西需要空间时 macOS 会释放它,所以即使访达说没有空间,大文件拷贝通常也能成功。但如果工具启动前先检查可用空间并拒绝启动,它就帮不上忙,而想立即释放它,唯一的办法是自己删除快照。