兄弟,你看到“系统数据”动辄占了两百多个G的时候,是不是跟我当时的反应一样——这玩意儿凭什么吃我这么多硬盘?我手里这台17款MacBook Pro,512G的固态硬盘,日常写代码、剪视频、做设计,某天打开“关于本机”一看:系统数据170G,可用空间只剩可怜巴巴的30G。整个周末我都在跟这块硬盘较劲,从275G占用一路腾到了196G可用,中间踩了无数坑。
这篇不搞虚的,直接把“系统数据”到底怎么来的、怎么安全拆掉、怎么设置预警防止下次再爆,以及17款Intel老MacBook Pro怎么优化升级,一次性讲透。内容基于我实际动手的经验,命令和路径都是验证过的,你照着抄就行。
1. 系统数据到底是什么:先搞清楚“敌人”是谁
1.1 存储空间界面里的“系统数据”是个大筐
macOS的“关于本机 → 存储空间”里,会把磁盘占用分成几个颜色块:应用程序、文稿、系统数据等。很多人一看“系统数据”就慌,以为系统本体占了这么多。实际上,这是一个包罗万象的分类,里面装的东西远不止系统文件。
官方没有给出精确的“系统数据”定义,但从我的排查记录来看,它至少包含:APFS本地快照(这是大头)、各种应用的缓存(~/Library/Caches、/Library/Caches)、日志文件(~/Library/Logs、/Library/Logs)、应用容器(~/Library/Containers)里的数据、系统临时文件、旧版本系统更新残留,以及一些不适配“文稿”“应用程序”分类的杂项文件。
打个生活化的比方:磁盘就像家里冰箱的抽屉。表面上你看得见的“应用”是整盒牛奶,“文稿”是洗干净堆好的蔬菜,而“系统数据”就是那些冻了很久的冰块、快过期的蘸料、一次性餐具、还有冷藏室背后结的那层霜。单独看每一样都不起眼,攒久了就是一大块空间。
1.2 为什么Intel Mac的“系统数据”特别容易爆
我查了很多资料,结合自己这台机器的实际情况,发现Intel MacBook Pro的系统数据膨胀,有几个绕不开的机制在起作用。
第一,APFS本地快照机制。从High Sierra开始,macOS用APFS作为默认文件系统,其中有个特性叫“本地快照”。当你开启了Time Machine但没接外置硬盘时,系统会把文件改动以“快照”形式存在本地磁盘上,目的是为了在你需要恢复文件时能找回历史版本。关键在于:这些快照是增量保存的,而且回收机制非常滞后。我当初检查时发现,光是本地快照就占掉了96.4G,而它们在“存储空间”界面里,恰恰被归类到“系统数据”里。
第二,应用缓存的雪球效应。Intel Mac用户日常用的软件,不少是吃缓存的大户:Adobe全家桶、微信、QQ、钉钉、Xcode、浏览器、虚拟机镜像。这些缓存在系统层面是被允许“无限增长”的,应用本身不会主动清理旧数据。比如微信,我在~/Library/Containers目录下找到了它,单是图片和视频缓存就堆了16G。
第三,系统表层的“昏迷账”。日志文件的积累、系统更新失败或中断后残留的临时文件、还有像/private/var/folders这样的临时目录,都会在你不注意的时候变得巨大。加上17款MBP原厂SSD普遍只有256G或512G,这种容量在2024年之后用起来本来就很紧张。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手前先做体检:别上来就乱删
2.1 用自带工具快速判断空间去哪了
想省心,先用macOS自带的方式做一个初步诊断。
打开左上角苹果菜单 → 关于本机 → 存储空间,这里可以看到大的分类占用。点“管理”按钮,系统会给出一些优化建议,比如“清空废纸篓”“优化存储”“减少杂乱文件”。但对“系统数据”这个大块,这个界面基本无能为力,只能告诉你占了多少,不能告诉你里面到底有什么。
这时候就要用终端了。打开“终端”App,输入:
bash复制df -h /
这个命令能看到根目录的总容量、已用、可用空间。接下来用:
bash复制sudo du -sh /System /Library /private/var 2>/dev/null | sort -rh
du是“disk usage”,-s是汇总,-h是人类可读格式,排序之后能快速看到哪几个系统目录最大。注意,这里需要输入管理员密码,而且扫描系统目录会花几分钟,耐心等。
2.2 用第三方工具揪出“真凶”
自带命令能看目录层级,但不够直观。我更推荐用可视化工具。我自己的习惯是装老牌的OmniDiskSweeper,或者用ncdu这种终端里的彩蛋神器。OmniDiskSweeper是免费软件,打开后选择根目录,它会以树状列表按从大到小排序,每一层目录的大小一目了然,双击进入就能看到最大的子目录和文件。
如果用ncdu,先通过Homebrew安装:
bash复制brew install ncdu
然后:
bash复制sudo ncdu /
它会交互式显示文件系统占用,方向键在目录间穿梭,就能一层一层找到最占空间的文件夹。
我实际扫描出来的结果(给大家一个参考),排在前面的有:Local Snapshots 96.4G、~/Library/Developer/Xcode/DerivedData 21G、微信容器16G、Adobe缓存30G、~/Library/Application Support下各种App的Local Storage和Cache 22G。这些加起来,就已经把512G吞掉一大半了。
注意:扫描过程中你会看到很多像/System/Volumes/Data、/System/Volumes/VM这些路径,这是APFS的卷结构,千万别手痒去删除里面的东西。我的原则是,体检阶段只“看”,不“动”,确定是大头之后,再按照下一节的顺序精准清理。
3. 清理实操:从安全到激进的三板斧
3.1 第一板斧:清Time Machine本地快照(大头中的大头)
如果你从来没查过本地快照,那这一步的收益往往是最大的。
原理再补一句:APFS本地快照是Time Machine的临时存放区,系统在没有外置备份盘时,会按一定频率把文件改动记录成快照。这些快照的存在本身是为了数据安全,但太多太旧就会严重占用磁盘。好消息是,它们是“可删除的”,而且删除后不会影响你现有文件。
先看看机器上到底积了多少快照:
bash复制tmutil listlocalsnapshots /
输出会列出日期和时间戳。比如:
bash复制com.apple.TimeMachine.2024-06-15-102535.local
com.apple.TimeMachine.2024-06-15-090032.local
如果你看到几十条这种记录,恭喜,你找到了空间杀手。删除单个快照的命令是:
bash复制sudo tmutil deletelocalsnapshots 2024-06-15-102535
后面跟的日期时间可以不带前缀,系统会自动匹配对应的快照。
批量“瘦身”更爽快,可以用thin命令:
bash复制tmutil thinlocalsnapshots / 999999999 2>/dev/null
后面的“999999999”是一个阀值参数,意思是快照占用超过这个字节数的时候就触发清理。因为快照总量一般远小于这个数字,实际效果就是“尽量清掉所有旧快照”(但系统会保留最新的一两份)。
我当时执行完之后,再跑df -h /一看,可用空间直接从30G跳到了80G。然后又用tmutil listlocalsnapshots /确认,只剩一条最新快照了。
注意:这一招做完,系统在下次接入外置备份盘之前还会继续生成新快照。如果你嫌它麻烦,可以在“系统设置 → 通用 → 时间机器”里把“自动备份”临时关掉,或者干脆定期接上备份盘让它把快照合并走。
3.2 第二板斧:清理缓存、日志和容器数据
快照清完之后,接下来的大头就是缓存和日志。目录主要集中在这几个位置:
- ~/Library/Caches——用户级应用缓存,最常见的大户
- /Library/Caches——系统级缓存,需要sudo权限才能删
- ~/Library/Logs 和 /Library/Logs——日志文件
- ~/Library/Containers——沙盒容器目录,很多App的数据都在里面
我通常这样操作:先看哪个目录最大,再精准清理。
bash复制du -sh ~/Library/Caches/* 2>/dev/null | sort -rh | head -20
执行完能看到哪些应用的缓存排在最前面。对知名应用(比如微信、企业微信、腾讯会议、钉钉、浏览器、Adobe)的缓存文件夹,可以放心删除。缓存本来就是临时文件,删掉后应用下次启动会重新生成,最多就是首次打开稍微慢一点。
清理日志也很安全:
bash复制sudo rm -rf /Library/Logs/*
rm -rf ~/Library/Logs/*
但这里有一个很大的坑:不要使用“清理大师”“磁盘瘦身”这类第三方工具,去扫描并自动删除“系统垃圾”。我身边有朋友被这类软件坑过,把/System/Library里的东西误删,导致系统启动失败,最后只能重装。手动清理,宁缺毋滥。
至于~/Library/Containers,这里面的文件夹都以应用Bundle ID命名,比如com.tencent.xinWeChat。你可以用du -sh看哪个容器最大,进入对应容器的Data/Library/Caches去删。注意,容器里的Application Support可能包含聊天记录、账号数据,不要整文件夹删除,最好只清子目录里的Cache。
另外强烈提醒:如果你装了Xcode,~/Library/Developer/Xcode/DerivedData经常是几个G起步。这个目录是编译缓存,删了完全不影响项目源码,顶多下次编译多花点时间。这是大快人心的“合法垃圾”。
3.3 第三板斧:废纸篓、下载目录和“其他”残骸
系统数据和缓存清完之后,再回头处理那些零碎但是积少成多的文件。
废纸篓是很多人忽略的地方。你以为删了的文件其实还占着空间,只是被移到~/.Trash。清空废纸篓最直接的方式是在Dock的废纸篓图标上按右键 → “清空废纸篓”,也可以用命令强制删除:
bash复制rm -rf ~/.Trash/*
接着看下载目录:
bash复制du -sh ~/Downloads/* 2>/dev/null | sort -rh | head -20
你会发现安装包、dmg、zip文件堆了一堆。这些下载完就再也没用过的文件,该删就删。另外,如果你用Homebrew,跑一下:
bash复制brew cleanup --prune=all
能清理旧版本的软件包,释放不少空间。
再检查~/Library/Application Support里哪些应用的数据占了大量空间。我之前发现Parallels虚拟机的Windows镜像占掉了40G,还有Steam游戏的缓存也堆了20多G。如果你有虚拟机镜像、旧iOS备份、旧iPhone备份文件,这些都属于“一旦删了就没了”的数据,务必确认还要不要,再决定是否清理。
我在一台朋友的机器上发现,光是iOS设备旧备份就占了75G——他以前天天连iPhone备份,备份文件叠加了不知道多少个版本。这类文件路径通常在~/Library/Application Support/MobileSync/Backup,删除旧备份就能立刻释放大量空间。
3.4 最后大招:如果还是不够,考虑备份-重装-恢复
如果你做到这一步,可用空间还是低于50G,系统卡顿明显、磁盘I/O频繁,那我建议直接上终极方案:备份 → 抹盘重装 → 恢复迁移。
在动手之前,先把要保留的东西备份好。可以用Time Machine外置盘做整盘备份,也可以手动把文稿、照片、桌面、应用列表、浏览器书签等关键数据拷到移动硬盘。我个人的习惯是两者都做:Time Machine做全量保底,关键目录再单独拷贝一份。
备份完成后,重启电脑,按住Command + R进入恢复模式。在“磁盘工具”里抹掉主分区(记得选APFS格式),然后选择“重新安装macOS”。装好后通过“迁移助理”从Time Machine或备份盘恢复数据。
我在这台17款MBP上做过一次抹盘重装,操作下来系统响应速度明显回升,磁盘可用空间从重装前的19G变成重装后的180G。这个过程会花费半天时间,但效果显著,适合机器已经“病入膏肓”的情况。
注意:抹盘重装前,一定要确认好所有需要保留的数据都被备份过了,这一步不可逆。我不建议用第三方工具做“系统深度清理”代替重装,那些工具对APFS快照、系统卷的处理方式并不透明,风险不可控。
4. 设置预警与日常维护:别等满了才动手
4.1 怎么给硬盘设置“空间不足预警”
macOS系统默认是没有“剩余空间低于XXG主动弹窗提醒”的,只有在磁盘快满时才会弹一个“您的磁盘几乎已满”的提示,但那时候基本已经晚了。
我自己用了一个小脚本,配合launchd定时任务,每天在固定时间检查剩余空间,低于设定的阈值就用弹窗提醒我。
脚本目录和内容如下:
bash复制#!/bin/bash
# ~/scripts/disk-check.sh
threshold=50
avail=$(df -h / | awk 'NR==2 {print $4}' | sed 's/[^0-9.]//g')
avail_gb=$(/usr/bin/awk -v val="$avail" 'BEGIN {printf "%.0f", val}')
if [ "$avail_gb" -lt "$threshold" ]; then
osascript -e "display notification \"当前可用空间只剩 ${avail_gb}G\" with title \"磁盘空间不足提醒\""
fi
然后用launchd设置每天上午10点运行。plist文件(~/Library/LaunchAgents/com.local.diskcheck.plist)内容大致是:
xml复制<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.local.diskcheck</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/你的用户名/scripts/disk-check.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>10</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
之后加载任务:
bash复制launchctl load ~/Library/LaunchAgents/com.local.diskcheck.plist
这样每天10点就会自动检查一次,低于50G就弹出通知。你也可以把阈值调到80G,给自己留更多缓冲。
4.2 从根上减少空间占用的几个习惯
清理一次容易,难的是不再让它悄悄堆积。我的经验是,从这几个方面入手,效果最持久:
- 保持外置备份盘随时可连接。如果你有一块固定的Time Machine备份盘,APFS本地快照会定期合并到备份盘上,不会在本地无限膨胀。这也是“为什么我建议你买一块外置硬盘”的原因。
- 卸载不用的应用,而不是只删图标。应用本身、它的缓存、它创建的~/Library/Application Support文件夹,都会残留。用AppCleaner这类工具做完整卸载,或者手动删除~/Library/Application Support下对应文件夹。
- 定期做一次“月度大扫除”。每个月挑一个周末,花15分钟跑一遍du -sh看哪个目录变大,清一下缓存和废纸篓,检查下载文件夹和旧备份。这套流程熟练之后,根本不用等系统数据爆满再来救火。
- 升级系统前留出空间余量。大版本更新(比如从macOS Ventura升到Sonoma)会下载几个G的安装包,同时在系统卷生成临时快照用于回滚。如果你磁盘常年低于30G,升级过程很容易卡死或失败。升级前至少留出50G空余。
- 虚拟机和大型镜像文件归档到外置盘。Parallels虚拟机、Docker镜像、视频剪辑工程的缓存文件,这些单个体积巨大且不常用,全部放到外置存储上,能大幅缓解主盘压力。
5. 老MacBook Pro 17款优化的延伸思考
5.1 清完还是卡?从这几处入手
清理完磁盘空间之后,如果你的17款MBP依然卡顿,别急着换机,先把这几件事做了。
重置SMC和NVRAM。Intel芯片的Mac有个祖传经验:关机后按住键盘左侧的Shift + Control + Option + 电源键10秒,松开后再正常开机,就能重置SMC;开机后立刻按Command + Option + P + R,等开机声循环两次再松开,重置NVRAM。这能解决一部分电源管理和显示输出的诡异问题。
然后在“系统设置 → 桌面与程序坞”里关掉“自动隐藏和显示程序坞”,在“辅助功能 → 显示”里把“减少透明度”打开,同时把动态壁纸换成静态壁纸。这些视觉效果在Intel核显或独显上都会吃资源,关掉之后界面操作会顺手很多。
还有,检查“登录项”。很多应用安装后默认随系统启动,挤占内存和磁盘I/O。在“系统设置 → 通用 → 登录项”里把用不上的统统移除,这是成本最低的提速方法。
5.2 旧Mac的另类出路:安装Ubuntu?先想清楚
“17款Intel MacBook Pro安装Ubuntu”这个思路我理解,机器配置还行,但macOS新版本越跑越重,有人就想换成轻量的Linux试试。
以我的实际经验来说,这个想法要慎重。Intel MacBook Pro的无线网卡(很多是Broadcom BCM系列)在Ubuntu下经常需要手动装驱动,蓝牙和电源管理也可能出问题。触控板的支持不如macOS流畅,HiDPI外接显示器的缩放也时不时有毛病。如果你不是对Linux桌面环境有刚需的开发人员,或者不打算把机器当服务器使用,那么装Ubuntu单系统反而是折腾自己。
我个人更推荐的做法是:给17款加内存(能加的话)、换大容量SSD、做好系统清理优化,让它继续跑macOS。这条路的性价比远高于切换到Linux。我的17款MBP自己动手把512G固态换成2T之后,配合清理和优化,日常办公、轻度剪辑完全够用,省下了一大笔换机钱。
5.3 数据备份与迁移的稳妥姿势
无论你是清理、重装还是换硬盘,数据备份都是第一步。用Time Machine做全量备份是Apple生态最省心的方案,接上外置盘之后在“系统设置 → 通用 → 时间机器”里开启就行。如果你有更高要求,可以用Carbon Copy Cloner做整块磁盘的克隆,这样恢复之后系统状态几乎和备份时一模一样。
对于重要文件(工作文档、照片、密码库、代码仓库),我会额外做一次云端备份和一次本地可移动介质备份。多重备份的逻辑是:本地磁盘可能坏,外置盘也可能坏,云端至少多一层保险。清理前不用把所有东西都备份,但“删除后你可能会后悔”的东西,一定要留一手。
如果已经不小心删掉了重要文件,在APFS文件系统下还有一线生机:如果你开启了Time Machine,可以从时间机器恢复;如果没有,尝试用数据恢复工具扫描,但成功率会随时间推移快速下降。所以我一直强调,清理文件前先备份,这不是废话,是血泪教训。
最后分享一点我的体会
我把这套清理流程固定成了每月的例行公事,最近一次3月大扫除只花了10分钟:先看df -h,清Time Machine快照,清常用缓存和废纸篓,确认下载文件夹没堆积,然后继续正常工作。现在这台机器长期保持120G以上的可用空间,系统数据一直稳定在40-50G左右,再也没出现过“磁盘已满”的红色警告。
如果你现在正对着“系统数据270G”的数字发愁,我的建议很明确:先从本地快照下手,然后用du -sh一通扫描,按顺序清理。别一上来就重装系统,也别随便用第三方“清理大师”。只要你愿意花上一个周末,这台MacBook Pro还能再战几年。
