上个月朋友搬来一台17款MacBook Pro,说电脑没干重活但磁盘天天红色报警。我打开「关于本机」一看,差点没绷住:存储空间里“系统数据”赫然占着270G。这事放几年前,大多数人第一反应是装个清理App,但踩过太多坑之后我的建议很明确:先别急着删,甚至别花钱买工具。这篇文章就是完整记录我怎么把这270G一点一点找回来,同时也聊聊硬盘预警怎么设置、老款Intel MacBook Pro后续怎么维护。
1. 先搞清楚“系统数据”到底是什么,再决定怎么删
1.1 系统数据不是一块铁板:拆开看看里面装了什么
很多人一看到“系统数据”四个字就默认它是系统自己占用的空间,觉得“系统就是这么臃肿,没办法”。这个认知是最大的误区。macOS里的“系统数据”,在旧版本里叫“其他”,本质上是一锅杂烩:Time Machine本地快照、各类缓存、日志文件、旧备份、软件残留、下载缓存,全都算进这个桶里。
我处理过十几台“系统数据爆炸”的Mac,绝大多数情况不是macOS真的需要270G,而是某个环节失控了。最常见的是三类:APFS本地快照只增不减、某款聊天软件的缓存仓库成百G、开发工具的各种派生数据堆了几十G。这些都属于“可以删且应该删”的东西,跟“系统运行必需”半点关系没有。
所以第一步不是打开某个清理App傻等,而是先搞清楚这270G到底分散在哪里。macOS自带的存储管理界面只给你一个汇总数字,想深入看就得用命令行或者专业扫描工具。
| 常见占用类型 | 典型路径 | 能不能直接删 |
|---|---|---|
| 本地Time Machine快照 | 隐藏APFS快照 | 可以,通过tmutil命令 |
| 用户缓存 | ~/Library/Caches | 可以,应用会自动重建 |
| 系统日志 | /Library/Logs、~/Library/Logs | 可以,老的直接删 |
| iOS设备备份 | ~/Library/Application Support/MobileSync/Backup | 可以,按需删旧的 |
| 微信/QQ缓存 | ~/Library/Containers/... | 可以,建议在App内清理 |
| Xcode派生数据 | ~/Library/Developer/Xcode/DerivedData | 可以,重新编译会生成 |
| 系统安装器 | /Applications/Install macOS*.app | 可以,装完就能删 |
1.2 三步定位法:不装任何工具也能判断谁吃掉了你的270G
我清了一台又一台Mac之后,总结出一套“不花钱先定位”的操作流程,适合绝大多数普通用户。
第一步打开「苹果菜单 > 关于本机 > 存储空间」,看看“系统数据”后面的数字以及下面有没有“可清除”的提示。这一步能给你一个总量概念,但别指望它告诉你明细。
第二步打开「访达 > 前往 > 前往文件夹」,输入 ~/Library/Caches,按大小排个序。如果这里某个文件夹占了20G以上,基本就锁定一个占用源了。这个目录是各种App的缓存集中地,谁大谁可疑。
第三步打开「终端」,执行一条命令:
bash复制sudo du -xhd 1 /System/Volumes/Data 2>/dev/null | sort -hr | head -20
这条命令会列出整个系统盘里各个一级目录的占用大小,从大到小排序。需要输入密码,跑完会等一会儿,别急。看到输出后,哪些目录该收拾基本就一目了然了。如果某一个用户目录下面特别大,再继续往下钻:
bash复制du -sh ~/Library/* 2>/dev/null | sort -hr | head -15
这套流程走完,你至少能知道这270G散落在哪几个大块里,再去清理就是有的放矢,而不是拿个清理App全盘瞎扫。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 优先级清单:先删这几类,90%的“系统数据”能原地消失
2.1 第一优先:本地Time Machine快照
本地Time Machine快照是“系统数据”暴涨的头号嫌疑犯。只要你的Mac开启了Time Machine备份(很多人不知道自己是开着的),macOS会在本地磁盘上周期性生成APFS快照。正常情况下系统会在磁盘紧张时自动瘦身快照,但某些版本bug或者磁盘长期处于“快满但没满死”的状态,快照就会越攒越多,几十上百G都很常见。
先看一眼快照情况:
bash复制tmutil listlocalsnapshots /
输出里会有一串类似 com.apple.TimeMachine.2024-01-01-120000.local 的条目。如果日期很多、跨度很大,那就是它们在占地方。清掉全部本地快照最直接的方式:
bash复制sudo tmutil thinlocalsnapshots / 9999999999 2>/dev/null
这条命令会把本地快照尽量瘦身到几乎为零。执行后再跑一次 tmutil listlocalsnapshots /,如果还有零星残留,可以指定日期删除:
bash复制tmutil deletelocalsnapshots 2024-01-01-120000
提示:本地快照不影响你已备份到外部硬盘或iCloud的Time Machine数据,删除只是释放本地空间。如果之后重新开启快照,系统也会按需重建,不用怕。
清理完快照之后再看一眼存储空间,运气好的话直接就能拿回150G以上的空间。这一步几乎零风险,是清理“系统数据”最划算的开始。
2.2 第二优先:开发者缓存、系统缓存和日志
日常使用中,各类缓存也是“系统数据”的重要来源。用户缓存在 ~/Library/Caches 下,系统级缓存在 /Library/Caches 下。这些缓存删掉后App顶多第一次打开慢一点,会自动重建,不会出什么幺蛾子。
手动清理时我一般这么操作:
bash复制# 删除当前用户的缓存目录内容
rm -rf ~/Library/Caches/*
# 系统级缓存需要sudo
sudo rm -rf /Library/Caches/*
# 清理日志
sudo rm -rf /Library/Logs/*
rm -rf ~/Library/Logs/*
风险提示还是要给足:第一,App正在运行时删它的缓存可能导致该App出现临时性异常,所以更好是退出所有常用App后再执行。第二,别去动 /System/Library/Caches,那是系统运行核心,普通用户完全不需要碰它。第三,如果某个App有自己独立的缓存目录,在App内清理更稳妥。
日志文件同理,系统运行久了,/Library/Logs 和用户日志目录里会有大量几百MB的旧日志,清了之后对系统毫无影响。日志这类文件删起来没有感觉,但积少成多也能腾出几个G到十几个G的空间。
2.3 第三优先:聊天软件和邮件的“隐形仓库”
很多人大扫除做得头头是道,唯独忘了微信、QQ这类聊天软件的缓存有多夸张。我见过一个极端case:某同事的微信缓存占了整整80G,里面全是群聊图片、视频、文件预览。聊天软件的数据目录一般很深,不借助扫描工具很难注意到。
微信的路径在macOS新版本下大概长这样:
bash复制~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/
想确认它占了多少,可以执行:
bash复制du -sh ~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat/* 2>/dev/null | sort -hr | head -10
最稳妥的处理方式是打开微信,进入「设置 > 通用 > 存储空间」,用微信自带工具清理缓存和不再需要的聊天文件。这样不会误删聊天记录,又能把图片视频的缩略图缓存清掉。如果只想手动删,只能删Cache目录,千万别动“Message”目录,那是聊天记录本体。
邮件客户端的附件下载缓存也存在本地,路径是:
bash复制~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads/
这个目录里的东西其实就是附件缓存,删了不影响邮件内容,只是再次打开某封带附件的邮件时需要重新下载。很多人的邮箱用几年,这地方攒下10G以上很正常。
2.4 清理前必读:哪些目录真不能乱动
清理时看到陌生路径,先别急着下手。我给自己定了一套原则:只动“可再生”的数据,绝不动“唯一副本”。
- 不能动
~/Library/Application Support下的App数据目录:里面往往是游戏存档、应用配置、数据库,删了无法恢复。 - 不能动
~/Documents、~/Desktop、~/Downloads里的用户文件:这些删了是真的没了。 - 不能动
/System目录里任何东西:系统核心,乱动会导致启动不了。 - 不能动钥匙串相关文件:
~/Library/Keychains,删了所有密码和证书都会丢。
清理前最保守的做法是两个“确认”:确认当前用户下没有重要的未备份文件,确认要删除的路径确实属于缓存、日志、临时文件、备份这类可再生物。只要守住这两条,就不会翻车。
3. 进阶方案:命令行和扫描工具把剩余空间一点点抠回来
3.1 用du命令做一次彻底的目录盘点
如果前面几轮清理后“系统数据”还是大几十G,就得进入掘地三尺模式了。我的目标是遍历整个用户目录和几个常见的高危目录,把每个超过1G的单项揪出来。
先找全盘超过1G的大文件:
bash复制find ~ -type f -size +1G 2>/dev/null | head -50
再对用户目录下的隐藏目录做扫描:
bash复制sudo du -xhd 1 ~ 2>/dev/null | sort -hr | head -30
扫描结果里如果看到某个App的文件夹异常大,就直接定位它的具体缓存:
bash复制du -sh ~/Library/Containers/* 2>/dev/null | sort -hr | head -20
这套组合拳能覆盖绝大多数“漏网之鱼”。我自己处理270G那次,用这套方法还发现了一个古董项目遗留的Docker镜像文件、一个旧版本Xcode的模拟器运行时,加起来差不多30G,属于典型的不清理永远不会发现的垃圾。
3.2 可视化工具对比:DaisyDisk、OmniDiskSweeper、ncdu
命令行适合大概扫描和精准删除,但可视化工具能帮你把“系统数据”的分布情况看得一目了然,尤其适合不太熟悉终端的用户。
我用过三款比较主流的:
| 工具 | 类型 | 优点 | 缺点 |
|---|---|---|---|
| DaisyDisk | 收费 | 图形化磁盘地图直观、清理流程顺滑 | 价格不算便宜 |
| OmniDiskSweeper | 免费 | 操作简单、能逐层看文件夹大小 | 扫描速度一般 |
| ncdu | 免费命令行 | 速度快、SSH到Mac远端也能用 | 界面朴素,需要懂终端 |
说下个人体验:DaisyDisk适合给朋友演示,那是因为它的环形图太直观了,一眼能看出哪个“彩色大块”占地方。免费场景我更推荐OmniDiskSweeper或者ncdu。尤其是ncdu,如果你习惯了终端操作,它的TUI界面效率极高,进入大目录、删除子目录都是一两下按键的事。
想用ncdu的话,先确保装了Homebrew:
bash复制brew install ncdu
然后运行:
bash复制sudo ncdu /System/Volumes/Data
需要注意的是,ncdu和所有扫描工具一样,是估算文件实际占用,不是macOS“系统数据”的精确统计,但用来定位大文件夹已经足够。
3.3 我为什么从不推荐“一键清理软件”
很多人喜欢装各种“清理大师”“系统优化工具”,点一下“一键清理”,看着进度条跑完感觉很爽。但就我的经验而言,这类工具在macOS上的性价比很低,有时候甚至是负优化。
原因有三条。第一,很多“一键清理”扫出来的主要是用户缓存和日志,这些你用系统自带命令几行就解决了,没必要为了省事安装一个占后台内存的常驻App。第二,某些清理工具为了显示“清理成果”,会把手伸向本不该管的目录,一个节奏没控制好就把App数据甚至用户文件给清了。第三,macOS和Windows的机制不一样,系统本身对文件管理的保守度很高,第三方“深度清理”并不像宣传中那么神。
注意:如果你已经被某些清理软件的界面吓到,或者想保留一个图形化工具备用,我宁可推荐你装一款“磁盘占用可视化”软件而不是“一键清理”软件。可视化的让你自己控制删除节奏,一键清理则把决策权交给了黑盒,风险完全不可控。
4. 治本工程:给硬盘设置预警,并让老MacBook Pro少走弯路
4.1 用macOS自带选项建立“空间安全网”
清理完成之后,如果不做任何预防措施,几个月后“系统数据”大概率又会涨回来。所以在空间健康的状态下,先把手动能做的“安全网”搭起来。
打开「系统设置 > 通用 > 储存空间」,这里有几个开关值得挨个看一遍:
- 优化储存空间:开启后macOS会自动管理iCloud文件,把不常用的文件转为“仅云端”。
- 自动移除废纸篓中的项目:开启后废纸篓里的文件30天后自动清空,避免废纸篓不知不觉吃掉几十G。
- 减少杂乱信息:系统会提示清理邮件、信息中的大附件和旧会话。
这些选项不能直接“删除系统数据”,但能阻止系统数据继续膨胀。尤其是“优化储存空间”,它会把iCloud中不常用的大文件变成云端占位符,本地只保留一个“幽灵文件”的壳,点开时才下载。对存储空间捉襟见肘的老MacBook Pro来说,这是最无感的扩容方式。
4.2 进阶预警:写一个launchd脚本,低于阈值自动弹通知
除了系统自带选项,我更习惯给Mac配置一个简单的磁盘剩余空间预警脚本。这个思路来自于一次很尴尬的经历:某台机器又塞满了,我打开才发现已经晚了,系统已经出现“磁盘几乎已满”的弹窗,有些App开始报错。
后来我写了一个简单的Shell脚本配合launchd,每30分钟检查一次剩余空间,低于设定阈值就弹系统通知。
脚本内容大概长这样:
bash复制#!/bin/bash
THRESHOLD_GB=30
FREE_KB=$(df -k / | awk 'NR==2 {print $4}')
FREE_GB=$((FREE_KB / 1024 / 1024))
if [ "$FREE_GB" -lt "$THRESHOLD_GB" ]; then
osascript -e "display notification \"剩余空间不足 ${FREE_GB}G,请及时清理\" with title \"磁盘预警\""
fi
把脚本保存到 /usr/local/bin/diskwarning.sh,然后给它执行权限:
bash复制chmod +x /usr/local/bin/diskwarning.sh
接着创建launchd配置,路径为 ~/Library/LaunchAgents/com.local.diskwarning.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.diskwarning</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/diskwarning.sh</string>
</array>
<key>StartInterval</key>
<integer>1800</integer>
<key>StandardErrorPath</key>
<string>/tmp/diskwarning.err</string>
</dict>
</plist>
StartInterval的单位是秒,1800就是每30分钟检查一次。最后加载任务:
bash复制launchctl load ~/Library/LaunchAgents/com.local.diskwarning.plist
有了这个预警之后,我再也没遇到过“突然塞满”的尴尬。磁盘低于30G就会弹通知,留出足够的时间做清理,不会等到系统被挤到卡顿才后知后觉。
4.3 17款老MacBook Pro的长期优化建议
17款MacBook Pro即便是当年的高配,到现在也已经算老将了。系统数据一旦清理干净,很多人会觉得运行状态也好了一些,这个感觉并不全是心理作用——磁盘空间低于10%时空闲越少,APFS可用空间越紧张,系统在写文件时的负担越重,整体响应也会变慢。所以给硬盘腾空间不只是为了“能放更多文件”,也是在给系统减负。
长期用下来我还有几个针对老款Intel MacBook Pro的优化习惯:
- 重置SMC和NVRAM。如果机器出现风扇异常、电池显示不准、睡眠唤醒异常这类“玄学问题”,关机后重置SMC(左侧Shift + Control + Option + 电源键按住10秒)和NVRAM(开机时Option + Command + P + R按住约20秒)往往能解决一部分。
- 在「系统设置 > 通用 > 辅助功能 > 显示」里开启“减少动态效果”,老机型UI卡顿会有明显改善。
- 减少开机启动项。这些后台程序虽然单个占内存不多,但十几个叠加起来,对老Mac的硬盘和内存都是负担。
- 如果动手能力允许,可以研究给机器换更大容量的SSD或者在雷电口外接高速移动硬盘。这种方案花不了多少钱,但能给容量吃紧的旧机器续一大口命。
5. 终极路线:当macOS本身太臃肿,不妨换个轻量系统
5.1 什么情况才值得考虑换系统
说句实话,老款Intel MacBook Pro在最近的macOS大版本上已经越来越吃力了。系统自身占用的空间越来越大,原本256G的硬盘刨除系统和系统数据,可用空间不到一半,这才是不少人折腾“intel mac book pro安装ubuntu”的根本原因。
我接触过不少换Linux系统的Mac用户,他们的选择逻辑通常很一致:日常需求以浏览器、写代码、看视频为主;对macOS独有生态依赖不深;机器的硬件已经跑不动新系统版本了,但丢掉又可惜。如果你的核心工作流已经被iCloud、Airdrop、Final Cut Pro这类Apple生态锁死,那别折腾换系统,老老实实清空间加外接存储更划算。
5.2 换系统前必须处理的几件事
如果真想走换系统的路线,我有几条基于实操经验的建议。
数据备份是第一位的,哪怕你觉得“没什么重要数据”也要备份。因为安装另一个系统就是重新分区,过程中无论出什么意外,数据丢失都是不可逆的。建议先把资料导出到移动硬盘,再用Time Machine做一次完整备份,双保险。
其次是确认硬件兼容性。我自己身边有朋友在17款MacBook Pro上装Ubuntu成功过,Wi-Fi和触控板驱动基本可用,但也有反馈说某些外接显示器组合或者睡眠唤醒有兼容问题。这种事没法听别人说,只能自己装之前去对应硬件社区查一下“17款 + Ubuntu”的具体帖子。
最后是预留恢复方案。万一Linux用不习惯,你还能不能装回macOS?建议保存好可引导的macOS安装U盘或者在App Store里下载好对应版本的安装器,把路留好再上车。
5.3 Ubuntu的实际占用和体验
很多被macOS“系统数据”折磨得焦头烂额的人,看到Ubuntu装机后的数据会有点震惊:一个完整可用的桌面系统,干净安装加基本软件,占用的磁盘空间大约8到10G,相比macOS动辄30G起步的系统占用,轻了太多。
但轻量不代表全无代价。Ubuntu在MacBook Pro上跑起来,像浏览网页、写代码、看视频这类日常任务是流畅的,但整体体验和macOS的原生顺滑度还是有区别。触摸板手势、显示色彩管理、部分硬件的省电策略,都需要一定的适应期。它更适合那种“把旧Mac当成一台普通Linux机器来用”的心态,而不是“希望它继续像Mac一样工作”。
如果你处在“系统数据清了又长,长了又清,实在不想和它纠缠”的周期疲劳期,Ubuntu确实是一个值得花一个周末尝试的出路,反正装个系统也吃不了多少空间,玩不惯再恢复macOS也来得及。
最后说几句实在话
这次帮朋友清理270G系统数据,整个过程其实没用什么高深技巧:本地快照瘦身、缓存和日志清理、旧备份和App残留处理,外加一次全盘扫描。技术含量不高,关键在“敢先诊断再动手”和“知道哪些能删哪些不能动”。很多人卡住的原因不是工具不够好,而是从来没意识到“系统数据”这四个大字下面藏着一堆可以随时丢弃的东西。
最后再分享一个我自己的小习惯:每次清理完空间,我都会顺手在日历上设一个“每月初看一次磁盘”的提醒。很多问题只要发现得早,根本不用搞得像这次这么大动干戈。你要是也被MacBook Pro的系统数据占得头疼,按这篇文章的顺序从头走一遍,大概率能收获不少惊喜。
