Mac系统数据占用187GB?一文彻底清理磁盘空间实战指南

发布时间:2026/9/26 17:08:09
Mac系统数据占用187GB?一文彻底清理磁盘空间实战指南 1. 从一次真实的磁盘告警说起那天下午正编译着项目Xcode 突然弹出一个磁盘空间不足的提示我瞄了一眼关于本机系统数据那一栏赫然写着 187GB。第一反应是 Time Machine 的本地快照堆积了但清理完快照之后系统数据依然纹丝不动。后来花了整整一个周末把能翻的目录全翻了一遍才把这块硬骨头啃下来。这篇文章就是那次排查的完整记录我会把每一个步骤、每一条命令、每一个踩过的坑都写清楚你照着做就行。Mac 的“系统数据”这个分类其实是个筐苹果把很多不方便归类的占用都扔进去了包括缓存、日志、快照、旧系统残留、Xcode 的派生数据、Docker 镜像、甚至一些第三方应用的沙盒数据。所以当你看到系统数据占了上百 G不要慌它大概率不是真的“系统”在用而是各种临时文件和缓存堆积的结果。这篇文章适合所有用 Mac 做开发或者日常办公、发现磁盘空间莫名其妙被吃掉的朋友不管你是刚入门的小白还是用了多年 Mac 的老手都能从里面找到能直接用的清理方案。2. 先搞清楚磁盘空间到底被谁吃了2.1 系统数据到底是什么很多人看到“系统数据”四个字就以为是 macOS 本身占的其实不是。在 macOS Ventura 之后的版本里存储空间分类中的“系统数据”包含了以下几类内容缓存文件包括系统缓存、应用缓存、浏览器缓存等路径通常在~/Library/Caches和/Library/Caches日志文件系统和应用的运行日志路径在~/Library/Logs和/var/logTime Machine 本地快照当外接备份盘不在身边时macOS 会在本地磁盘上创建快照这些快照可能占用几十甚至上百 GXcode 相关文件派生数据、归档、模拟器运行时、设备支持文件等这部分对 iOS 开发者来说是大头旧系统残留系统升级后留下的旧版本文件路径在/System/Volumes/Data下的隐藏目录第三方应用数据Docker 镜像、虚拟机磁盘、Adobe 缓存等注意系统数据的大小是动态变化的你今天看到 100G明天可能变成 80G因为系统会自动清理一部分缓存。但如果它持续增长不下降那就说明有东西在持续写入。2.2 用系统自带工具做初步排查在动手清理之前先做一次全面排查搞清楚空间到底去哪了。macOS 自带的存储管理工具可以给你一个大致的方向打开“系统设置” → “通用” → “存储空间”等待系统扫描完成。这里你会看到各个分类的占用情况。点击“系统数据”旁边的信息按钮系统会列出一些大文件但这个列表往往不完整。更精确的方式是用命令行。打开终端先看看根目录下各个大目录的占用sudo du -sh /System/Volumes/Data/* 2/dev/null | sort -rh | head -20这条命令会列出数据卷下所有一级目录的大小按从大到小排序。注意sudo是必须的因为很多目录需要 root 权限才能读取。执行时间可能比较长耐心等。然后看看用户目录下的情况du -sh ~/Library/* 2/dev/null | sort -rh | head -20这两条命令跑完你基本就能定位到空间被哪个目录吃掉了。我第一次跑的时候发现~/Library/Developer占了 60 多 G~/Library/Containers占了 30 多 G问题一下就清晰了。2.3 用第三方工具做可视化分析命令行虽然精确但不够直观。推荐几个免费的可视化磁盘分析工具GrandPerspective开源免费扫描后以矩形树图展示文件占用一眼就能看出哪个文件夹最大OmniDiskSweeper免费版就够用按大小排序列出所有文件支持直接删除DaisyDisk付费但体验最好界面漂亮扫描速度快我个人习惯用 GrandPerspective扫描整个磁盘后那些巨大的色块就是占用大户。点进去就能一层层展开找到具体的文件。这个工具的好处是它直接读取文件系统的元数据不会像 Finder 那样漏掉隐藏文件。实操心得扫描的时候不要扫整个磁盘先扫~/Library和/Library这两个目录90% 的问题都出在这里。全盘扫描太慢而且系统目录你也不能随便动。3. 逐项击破系统数据清理实战3.1 Time Machine 本地快照清理Time Machine 本地快照是我遇到的第一个大头。当你开启了 Time Machine 但没有连接备份盘时macOS 会自动在本地创建快照这些快照会随着时间推移不断累积。我见过最夸张的情况本地快照占了 200 多 G。先查看当前有哪些快照tmutil listlocalsnapshots /你会看到类似这样的输出com.apple.TimeMachine.2024-01-15-103045.local com.apple.TimeMachine.2024-01-16-142230.local com.apple.TimeMachine.2024-01-17-091512.local每个快照后面都有时间戳。删除单个快照sudo tmutil deletelocalsnapshots 2024-01-15-103045如果你想一次性删除所有本地快照sudo tmutil deletelocalsnapshots /注意删除本地快照不会影响你已有的 Time Machine 备份只是删掉了本地磁盘上的临时快照。但删除后如果你没有连接备份盘这段时间的数据就没有备份保护了。我一般会保留最近两三天的快照把更早的删掉。这样既释放了空间又保留了一定的本地恢复能力。另外如果你根本不用 Time Machine可以直接关闭本地快照功能sudo tmutil disablelocal不过在较新的 macOS 版本中这个命令可能已经失效系统会自动管理快照。更稳妥的方式是定期手动清理。3.2 Xcode 缓存与派生数据清理如果你是 iOS 开发者Xcode 绝对是磁盘空间的第一大杀手。Xcode 会在多个位置存放文件每一个都可能占用大量空间。派生数据DerivedData是 Xcode 存放编译中间产物的地方路径在~/Library/Developer/Xcode/DerivedData。这个目录可以安全删除Xcode 会在下次编译时重新生成。我见过这个目录占到 50G 以上的情况。rm -rf ~/Library/Developer/Xcode/DerivedData/*归档文件Archives存放的是你打包上架的 .xcarchive 文件路径在~/Library/Developer/Xcode/Archives。这些文件用于符号化崩溃日志和重新导出 IPA建议保留最近几个月的旧的可以删掉。每个归档文件可能几百 M 到几个 G。du -sh ~/Library/Developer/Xcode/Archives/*查看每个归档的大小后手动删除不需要的。iOS 设备支持文件iOS DeviceSupport路径在~/Library/Developer/Xcode/iOS DeviceSupport。每次你连接一个新版本的 iOS 设备Xcode 都会下载对应的符号文件每个版本大概 2-4G。如果你支持很多 iOS 版本这个目录会非常大。du -sh ~/Library/Developer/Xcode/iOS\ DeviceSupport/*删除旧版本的支持文件只保留你当前需要调试的版本。模拟器运行时Simulators路径在~/Library/Developer/CoreSimulator/Devices。每个模拟器实例都是一个完整的系统镜像占用几个 G。你可以通过 Xcode 的 Devices and Simulators 窗口删除不用的模拟器也可以用命令行xcrun simctl delete unavailable这条命令会删除所有不可用的模拟器比如旧 iOS 版本对应的。Xcode 缓存还包括~/Library/Caches/com.apple.dt.Xcode和~/Library/Developer/Xcode/UserData前者是缓存后者是配置缓存可以删配置建议保留。实操心得我写了一个脚本每次 Xcode 大版本更新后跑一次自动清理 DerivedData 和旧的 DeviceSupport。这个习惯帮我省下了至少 100G 的空间。脚本很简单就是几行 rm 命令你可以根据自己的情况调整。3.3 缓存与日志文件的系统化清理~/Library/Caches是缓存文件的大本营几乎所有应用都会在这里建一个自己的目录。这个目录可以安全删除应用会在需要时重新生成缓存。但要注意删除后第一次打开应用可能会慢一些。先看看哪些应用的缓存最大du -sh ~/Library/Caches/* 2/dev/null | sort -rh | head -20常见的缓存大户包括Google Chrome浏览器缓存可能几个 GSpotify离线歌曲缓存Adobe各种 Creative Cloud 应用的缓存Docker镜像层缓存Homebrew下载的安装包缓存对于浏览器缓存建议直接在浏览器设置里清理而不是手动删目录。对于其他应用可以手动删除对应的缓存目录。~/Library/Logs存放的是应用日志通常不会太大但有些应用会疯狂写日志。同样先查看大小du -sh ~/Library/Logs/* 2/dev/null | sort -rh | head -20日志文件可以直接删除不影响应用运行。系统级别的日志在/var/log和/private/var/log这些需要 sudo 权限。不过系统日志通常有自动轮转机制不会无限增长。注意不要删除/Library/Caches下的所有内容有些系统级缓存删了之后会导致某些功能异常。建议只删除你认识的、确定是第三方应用的缓存目录。3.4 Docker 与虚拟机磁盘清理如果你用 Docker 做开发Docker 的磁盘占用可能非常惊人。Docker 在 Mac 上实际是运行在一个 Linux 虚拟机里的所有镜像、容器、卷都存放在虚拟磁盘文件中路径通常在~/Library/Containers/com.docker.docker/Data/vms。先看看 Docker 的磁盘使用情况docker system df这会显示镜像、容器、卷和构建缓存各自占用的空间。然后可以逐项清理# 删除所有未使用的镜像 docker image prune -a # 删除所有停止的容器 docker container prune # 删除所有未使用的卷 docker volume prune # 删除所有未使用的网络 docker network prune # 一键清理所有未使用的资源 docker system prune -a --volumes最后那条命令会删除所有未使用的镜像、容器、卷和网络慎用但效果最彻底。我一般每个月跑一次能释放十几 G 的空间。如果你用 Parallels Desktop 或 VMware Fusion 跑虚拟机虚拟磁盘文件.pvm 或 .vmwarevm也可能占用几十 G。这些文件在~/Documents/Parallels或~/Virtual Machines.localized下。如果虚拟机里有快照快照文件也会占用大量空间。建议在虚拟机软件里管理快照删除不需要的。3.5 旧系统残留与 iOS 备份清理macOS 每次大版本升级后旧系统的文件不会立即删除而是保留一段时间以便回滚。这些文件在/System/Volumes/Data下的隐藏目录中比如Previous System或macOS Install Data。查看这些目录sudo ls -la /System/Volumes/Data/如果你确定不需要回滚可以删除这些残留。但操作要非常小心不要删错文件。另一个容易被忽略的大户是iOS 备份。当你用 Finder 或 iTunes 备份 iPhone 时备份文件存放在~/Library/Application Support/MobileSync/Backup。每个备份可能几 G 到几十 G而且旧备份不会自动删除。du -sh ~/Library/Application\ Support/MobileSync/Backup/*查看每个备份的大小和日期删除不需要的旧备份。你也可以在 Finder 的“管理备份”中删除。3.6 其他常见占用大户还有一些零散但可能很大的占用邮件附件如果你用 Mail.app附件缓存在~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads可能积累很多。照片图库如果你开启了 iCloud 照片的“优化 Mac 存储空间”原始照片会上传到云端本地只保留缩略图。但如果没开启照片图库可能非常大。检查~/Pictures/Photos Library.photoslibrary的大小。下载文件夹这个不用多说定期清理。废纸篓删除文件后别忘了清空废纸篓特别是从外接磁盘删除的文件可能还在废纸篓里占着空间。Adobe 缓存如果你用 Adobe 全家桶~/Library/Application Support/Adobe/Common/Media Cache Files可能很大。Steam 游戏如果你在 Mac 上玩游戏Steam 的游戏文件在~/Library/Application Support/Steam/steamapps不玩的游戏可以卸载。4. 建立长效的磁盘空间管理机制4.1 定期清理的自动化方案手动清理一次能解决问题但过几个月又会堆积。最好的办法是建立定期清理机制。我自己的做法是写一个 shell 脚本每月跑一次自动清理那些确定安全的目录。#!/bin/bash echo 开始清理... # 清理 Xcode DerivedData rm -rf ~/Library/Developer/Xcode/DerivedData/* echo DerivedData 已清理 # 清理不可用的模拟器 xcrun simctl delete unavailable echo 不可用模拟器已清理 # 清理 Homebrew 缓存 brew cleanup -s echo Homebrew 缓存已清理 # 清理 Docker 未使用资源 docker system prune -f echo Docker 未使用资源已清理 # 清理旧的日志文件 find ~/Library/Logs -name *.log -mtime 30 -delete echo 旧日志已清理 # 清理废纸篓 rm -rf ~/.Trash/* echo 废纸篓已清空 echo 清理完成把这个脚本保存为cleanup.sh加上执行权限每月手动跑一次或者用 launchd 定时执行。注意脚本里没有删除缓存目录因为缓存删了之后应用会重新生成频繁删除反而影响使用体验。实操心得不要用那些一键清理的第三方工具它们往往清理不彻底还可能误删重要文件。自己写脚本清楚每一行在做什么才是最安全的。4.2 监控磁盘空间的预警设置与其等到磁盘满了再清理不如提前设置预警。macOS 没有内置的磁盘空间预警功能但你可以用一些简单的方法实现。方法一在终端里加一个别名每次打开终端时显示磁盘使用情况。编辑~/.zshrc加入alias dfdf -h /System/Volumes/Data | tail -1这样每次输入df就能快速查看。方法二用 launchd 定时检查当磁盘使用超过 85% 时发送通知。这个需要写一个 plist 文件稍微复杂一些但一劳永逸。方法三用第三方工具如 Sensei 或 CleanMyMac 的监控功能它们会在菜单栏显示磁盘使用情况并在空间不足时提醒你。我个人的习惯是每周瞄一眼存储空间发现系统数据超过 50G 就手动清理一次。这个阈值你可以根据自己的磁盘大小调整。4.3 养成不堆积文件的日常习惯清理是治标不堆积才是治本。几个日常习惯能帮你省下很多空间下载文件夹每周清空一次下载的东西要么归档要么删除不要一直堆着Xcode 项目定期清理不活跃的项目直接删掉 DerivedData或者用xcodebuild clean清理Docker 镜像用完就删不要留着几十个没用过的镜像截图和录屏及时处理桌面上的截图文件很容易积累设一个文件夹定期整理大文件用外接硬盘视频素材、虚拟机磁盘这些大文件放在外接硬盘上不要占内置磁盘这些习惯看起来简单但坚持下来效果非常明显。我现在的 Mac 用了两年系统数据一直控制在 30G 以内再也没有出现过磁盘告警。5. 常见问题与排查技巧实录5.1 清理后空间没有释放怎么办这是最常见的问题。你删了一堆文件但存储空间显示没有变化。原因通常有几个废纸篓没清空从 Finder 删除的文件会先进废纸篓必须清空废纸篓才能真正释放空间。从终端用rm删除的文件不进废纸篓直接释放。Time Machine 本地快照即使你删了文件如果本地快照还在空间不会释放。因为快照里还保留着这些文件的副本。必须先删除快照。文件被进程占用如果某个文件正在被进程使用删除后空间不会立即释放要等进程结束。可以用lsof | grep deleted查看被删除但仍在占用的文件。APFS 快照APFS 文件系统的快照机制可能导致空间延迟释放。重启电脑通常能解决。系统缓存macOS 会缓存一些磁盘操作空间显示可能滞后。等几分钟或者重启。排查顺序先清空废纸篓再检查本地快照然后重启电脑。90% 的情况这三步就能解决。5.2 哪些目录绝对不能删清理磁盘空间时有些目录是绝对不能碰的删了会导致系统或应用无法正常运行目录说明/System系统核心文件只读卷正常也删不了/Library/Extensions系统扩展删了可能导致硬件无法工作~/Library/Preferences应用偏好设置删了所有应用都要重新配置~/Library/Keychains钥匙串删了所有密码都没了~/Library/Application Support应用数据删了应用可能丢失配置和数据~/Library/Containers沙盒应用数据删了应用数据全丢/private/var/db系统数据库删了系统可能无法启动注意~/Library/Caches可以删~/Library/Application Support不能随便删。这两个目录名字很像但性质完全不同。缓存删了会自动重建应用数据删了就真没了。5.3 系统数据反复增长怎么排查如果你清理完没几天系统数据又涨回来了说明有东西在持续写入。排查方法先用sudo fs_usage监控文件系统活动看看哪个进程在疯狂写文件。这个命令输出很快可以用grep过滤sudo fs_usage | grep -E write|create然后观察哪些进程频繁出现。常见的罪魁祸首包括Spotlight 索引如果索引损坏会反复重建导致大量磁盘写入。可以用mdutil -E /重建索引iCloud 同步如果同步卡住了会反复尝试产生大量日志和临时文件日志失控的应用某些应用会疯狂写日志用du -sh ~/Library/Logs/*查看Docker如果容器在持续运行并写日志Docker 虚拟磁盘会不断增长找到罪魁祸首后针对性解决。如果是应用的问题考虑更新或替换该应用。5.4 清理工具的选择与避坑市面上有很多 Mac 清理工具质量参差不齐。我的建议是推荐用的GrandPerspective磁盘分析开源免费OmniDiskSweeper磁盘分析免费版够用DaisyDisk磁盘分析付费但好用AppCleaner卸载应用时清理残留免费谨慎用的CleanMyMac功能全但激进可能误删建议只用它的卸载和监控功能MacKeeper口碑差不推荐各种“一键加速”工具往往只是清理缓存效果有限还可能带来隐私问题实操心得我从来不用一键清理工具因为我不清楚它到底删了什么。自己用命令行和 GrandPerspective 分析手动删除虽然麻烦一点但安全可控。磁盘清理这件事宁可慢一点也不要冒险。5.5 磁盘空间不足时的紧急处理如果你现在磁盘已经满了系统卡顿甚至无法操作需要紧急释放空间按以下优先级处理清空废纸篓最快可能立即释放几 G 到几十 G删除 Time Machine 本地快照sudo tmutil deletelocalsnapshots /通常能释放大量空间删除 Xcode DerivedDatarm -rf ~/Library/Developer/Xcode/DerivedData/*清理 Dockerdocker system prune -a --volumes删除下载文件夹和桌面的大文件清理浏览器缓存这六步做完通常能释放至少 50G 的空间。如果还不够再用 GrandPerspective 深入分析。6. 我的个人清理流程与工具清单经过多次实践我总结出了一套固定的清理流程每次磁盘告警时按顺序执行基本能在半小时内解决问题。第一步快速诊断5 分钟打开 GrandPerspective 扫描~/Library同时用du -sh命令查看几个关键目录的大小。确定主要占用来源。第二步清理快照和废纸篓2 分钟sudo tmutil deletelocalsnapshots / rm -rf ~/.Trash/*第三步清理开发相关缓存10 分钟rm -rf ~/Library/Developer/Xcode/DerivedData/* xcrun simctl delete unavailable docker system prune -a --volumes brew cleanup -s第四步清理应用缓存和日志5 分钟用 GrandPerspective 找出~/Library/Caches下最大的几个目录手动删除。清理~/Library/Logs下的旧日志。第五步检查大文件5 分钟用 GrandPerspective 扫描整个用户目录找出超过 1G 的文件逐个判断是否需要保留。第六步重启并验证3 分钟重启电脑让系统释放被占用的空间然后查看存储空间确认清理效果。这套流程我跑了不下十次每次都能把系统数据从 100G 以上降到 30G 以内。工具清单也很简单GrandPerspective、终端、加上几个命令行工具不需要任何付费软件。最后分享一个小技巧如果你不确定某个文件能不能删先把它移到外接硬盘或者另一个分区用几天看看系统有没有异常。确认没问题后再彻底删除。这个“缓刑”策略帮我避免了好几次误删。磁盘清理这件事说到底就是搞清楚什么东西在占空间然后判断哪些可以安全删除。没有魔法也不需要什么高级工具耐心加细心就够了。