ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Mac磁盘空间清理:从根源解决“系统数据”占用上百GB的难题

Mac磁盘空间清理:从根源解决“系统数据”占用上百GB的难题 我的 Mac 提示“磁盘空间已满”的时候我扫了一眼“关于本机-储存空间”好家伙系统数据直接占了 100 多G。一开始我还以为是安装包没删干净后来才发现真正的坑远比我想象的多。这篇文章就是把我踩过的坑、试过的方法、清理完又复发的教训全整理一遍尽量把每一步都写清楚适合所有被 Mac 存储空间折磨的人参考。先说结论Mac 存储空间被吃掉 100G 以上的情况非常常见绝大多数不是什么“中毒”或“坏了”而是系统备份快照、缓存文件、日志文件、开发者工具这几个大头在搞鬼。解决思路也简单先用工具定位哪里占空间再按优先级逐项清理最后配合定期维护防止反弹。整个过程不需要重装系统风险相对可控按下面的步骤走基本都能清出几十个G。1. 先用自带工具看清楚空间到底去哪了1.1 别急着删先打开储存空间概览点击左上角苹果图标选择“关于本机”切到“储存空间”标签页。这里会给你一个大致的分类图比如应用程序、文稿、系统数据、macOS、照片、邮件等。如果你发现“系统数据”或“其他”占了很大一部分那基本可以断定问题出在缓存、日志、本地快照这类系统文件上。我第一次看到“系统数据”这一项足足有 80 多G第一反应是“这是什么鬼”。后来才慢慢搞清楚这个分类在旧版 macOS 里叫“其他”包括的内容非常杂缓存、日志、临时文件、Time Machine 本地快照、旧的系统更新包、磁盘映像文件、开发者工具、虚拟机镜像甚至 Spotlight 索引文件都在里面。所以这个数字很大不代表哪里出问题了它只是把不属于“应用程序”“文稿”“照片”的东西一股脑归到这一类。1.2 系统为什么会悄悄占这么多空间一个比较隐蔽的原因是“本地快照”。只要你开过 Time Machine就算没有外接备份盘macOS 也会在本地留一份快照方便你恢复误删的文件。问题在于有些情况下本地快照不会自动清理尤其当你的外置备份盘很久没插上时系统会持续保留这些快照导致空间被慢慢吃光。另一个大头是“缓存”App 的缓存、系统的缓存、浏览器的缓存日积月累相当可观。再加上每次系统更新留下的旧安装包、旧版动态库以及各类开发工具的中间产物100G 根本不稀奇。1.3 先建立一个排查清单如果你也想系统地排查我建议的顺序是先看 Time Machine 快照再看系统缓存然后是日志和临时文件最后是开发者工具相关文件夹。这个顺序符合“越容易清理、越安全”的原则。别一上来就找文件夹乱删容易误伤。2. 定位大文件的利器图形化工具加命令行双管齐下2.1 用图形化工具快速找到“空间黑洞”App Store 里有不少磁盘占用分析工具比如 DaisyDisk、OmniDiskSweeper、GrandPerspective。DaisyDisk 是可视化的环形图扫一眼就知道哪个目录最大。GrandPerspective 是免费的用色块显示文件大小分布。OmniDiskSweeper 更朴素直接列出每个文件夹的大小。我最常用的还是 GrandPerspective因为它免费且能按文件大小排序。打开后选择根目录等它扫描完你会看到很多大色块通常颜色最深、面积最大的那几个就是“罪魁祸首”。鼠标悬停可以看具体路径然后右键在 Finder 中显示就能定位到具体文件。2.2 命令行定位更精准推荐这几个配方图形化工具适合看全景但真要针对某个目录深挖命令行效率更高。我常用的几条命令# 查看磁盘整体占用 df -h # 查看当前目录下每个子目录的大小按从大到小排序 du -sh * | sort -rh # 查看隐藏目录的大小前面加 . 就行 du -sh ./* ./.??* 2/dev/null | sort -rh # 查看 Library 下哪几个目录最肥 du -sh ~/Library/* | sort -rh | head -30小技巧如果某个目录一直显示不出来大小可能是权限问题。你可以在命令前面加sudo输入密码后再试。比如sudo du -sh /Library/* | sort -rh。2.3 随手记录下“哪个目录最肥”我个人的习惯是先用du统计一遍心里有个底然后针对性清理。下面这个例子是我在朋友电脑上执行的结果截取了最占空间的前几个45G ~/Library/Containers 28G ~/Library/Application Support 15G ~/Library/Caches 9G /System/Volumes/Data/Library 5G ~/Downloads可以看到Containers和Application Support占了很大比例。这两个目录一个存放 App 的沙盒数据一个存放 App 的配置文件和缓存里面很容易积累垃圾。后面我会详细展开这两个目录的清理方法。3. 按优先级清理先动安全的再动顽固的3.1 第一步处理 Time Machine 本地快照如果你开了 Time Machine 但长期不接备份盘本地快照就会越攒越多。检查方法用终端最快tmutil listlocalsnapshots /如果列出的快照数量很多可以根据时间判断哪些可以删。删除单条快照的命令是tmutil deletelocalsnapshots 2024-01-01-000000但这样一条条删比较费劲可以一次性禁用本地快照。执行下面的命令会暂时关闭 Time Machine 的本地快照功能重启后才会重新生效sudo tmutil disablelocal注意这个参数在高版本 macOS 里已经被移除了如果你执行报错那就别纠结直接用tmutil listlocalsnapshots /配合上面的删除命令来处理。亲测下来把本地快照清理一遍通常能释放 20 到 50G 空间。另外别忘了把 Time Machine 自动备份的间隔时间调大一些或者在“系统设置-Apple ID-iCloud-云盘”里看看有没有同步的在云端占空间的文件。本地快照只是“防治”从源头减少快照数量才是长久之计。3.2 第二步清理缓存目录安全系数最高缓存是最好欺负的对象删了之后系统会自动重建而且不会影响正常使用。重点看这几个地方~/Library/Caches ~/Library/Logs ~/Library/Application Support/CrashReporter /System/Volumes/Data/Library/Caches其中~/Library/Caches最安全可以直接把里面的子目录都删了。但有个细节要注意有些 App 正开着它的缓存文件可能正在被占用导致删除失败或者下次启动时重建出错。建议先把相关 App 退出再删。~/Library/Logs和CrashReporter里的崩溃日志如果你不是开发者基本可以全删。系统日志、崩溃报告这类文件对普通用户来说毫无价值我最多留最近几天其余都删。3.3 第三步清理系统缓存与临时文件除了用户目录系统层面的缓存也不小。执行下面命令可以尝试清理系统缓存但前提是你能接受某些 App 首次打开时变慢因为缓存都没了需要重新生成sudo rm -rf /System/Volumes/Data/Library/Caches/com.apple.iconservices.store sudo find /System/Volumes/Data/Library/Logs -type f -mtime 7 -delete/private/var/folders目录是临时文件的存放地很多隐藏的缓存也在这里。安全起见不建议手动整个删除可以使用系统自带的“存储空间”管理工具来清理“临时文件”。在“储存空间”界面点一下“管理”会有一个“系统数据”的入口点进去可以看到“开发人员工具”“缓存”“日志”等分类里面能一键删除的内容就一键删。不过实测这个交互比较鸡肋有时点“删除”后空间释放并不明显所以我的习惯还是以命令行为主图形界面为辅。3.4 第四步处理“其他”里的旧系统更新包和安装镜像macOS 每次大版本更新都会下载好几个G的安装包安装完成后旧安装包可能会遗留在~/Downloads或~/Library/Application Support/com.apple.TCC之类的目录。还有一种是.dmg或.iso镜像文件一旦安装完就可以删了。你可以在“访达”里用快捷键CmdShiftG输入~/Downloads看看里面有没有已经安装完的 dmg 文件。另外系统自带的“储存空间-管理-文稿”里也会列出大文件比如缓存、废纸篓、iCloud 云盘里的旧版本文稿能删就删。有一点必须注意不要手动删除/System/Volumes/Update或/Library/Updates下的文件除非你明确知道自己在做什么。这些目录与系统更新完整性有关乱删可能导致下一次系统更新失败。如果你确实想清理旧更新缓存建议用系统自带的“系统设置-通用-储存空间”里的“优化储存空间”它会在后台帮你处理部分更新遗留文件。4. 容易被忽略的“存储大户”逐个击破4.1 开发者工具的“隐藏炸弹”如果你是开发者那你的 Mac 里可能躺着几十G的开发工具缓存。最典型的是 Xcode。~/Library/Developer/Xcode/DerivedData这个目录我见过有超过 30G 的。它存放的是项目编译的中间产物删了之后下次编译会重新生成所以非常安全。清理命令很简单rm -rf ~/Library/Developer/Xcode/DerivedData另外 Xcode 设备支持文件 (iOS DeviceSupport) 和模拟器运行时也可能占几个G如果你不需要调试旧版本系统也可以删rm -rf ~/Library/Developer/Xcode/iOS DeviceSupport rm -rf ~/Library/Developer/Xcode/watchOS DeviceSupport还有 CocoaPods 缓存和 Swift Package Manager 缓存位置在~/Library/Caches/org.swift.swiftpm和~/Library/Caches/CocoaPods删掉不影响项目只是下次pod install或swift build会重新下载依赖。4.2 虚拟机镜像和容器这个是大头用 UTM、Parallels Desktop、VMware Fusion 跑虚拟机的朋友要注意虚拟机镜像文件动辄几十个G通常放在~/Parallels或~/Documents下。如果你有不再需要的虚拟机系统直接在虚拟软件里删除能一口气释放大量空间。还有 Docker Desktop它的镜像和容器数据默认在~/Library/Containers/com.docker.docker/Data。我用docker system prune -a清理无用的镜像时发现能释放超过 40G 空间。虽然这个命令不是纯 Mac 存储优化命令但对 Mac 本地存储的影响非常直接。容器中那些“悬空镜像”和“停止的容器”长时间不清理都是磁盘杀手。建议定期执行docker system prune -a --volumes docker builder prune4.3 邮件附件和下载目录邮件客户端如果设置了“下载所有附件”那邮件里的图片、PDF 会被缓存到本地。在“邮件”App 的偏好设置里把“下载附件的方式”改为“最近观看的”或“不自动下载”能缓解不少。如果你用的是 Outlook它的缓存目录也可能巨大建议在设置里限制离线缓存大小。~/Downloads这个目录很容易被忽略因为看起来只是零散几个文件但日积月累几百MB到几个G都很正常。可以定期把需要的文件归档到移动硬盘或云盘其余清空。4.4 App 容器的“沙盒垃圾”回到刚才提到的~/Library/Containers这是 App 沙盒数据的存放目录。大部分 App 的缓存和离线数据都在这里。我用群晖和 NAS 的时候发现像com.tencent.xinWeChat微信这类聊天工具的缓存能到 5G 以上。很多聊天工具会把图片、视频、语音全部缓存在本地而且清理入口藏得很深。最好的办法不是在终端里删而是打开 App 自带的清理功能。比如微信的设置里可以选择“存储空间-管理”来清理聊天缓存。在删终端里~/Library/Containers/com.tencent.xinWeChat时建议先把微信完全退出然后删除Data/Library/Application Support/com.tencent.xinWeChat下的临时缓存目录。不过这种方法只建议对纯缓存目录操作别直接删整个 App 数据目录否则聊天记录和登录状态会丢失。4.5 iOS 备份文件与旧设备备份iTunes/Finder 曾经给你 iPhone 或 iPad 做过完整本地备份的话备份文件会放在~/Library/Application Support/MobileSync/Backup。每个备份可能 20G 到 60G 不等如果你不打算恢复旧设备可以全删。这个目录是我清理别人电脑时见过最大的单个目录之一。在终端里操作很快du -sh ~/Library/Application\ Support/MobileSync/Backup/* rm -rf ~/Library/Application\ Support/MobileSync/Backup/备份名称删之前可以先用访达打开该目录确认备份时间以免误删。5. 清理完之后空间怎么又满了5.1 刚删完就反弹多半是这几个原因我自己就遇到过第一天清了 40G第二天又变成 30G整个人都快崩溃了。后来复盘主要原因有三一是 iCloud 的优化存储功能。如果你开启了“桌面与文稿”同步Mac 会将本地文件替换为云端占位符但也可能反过来下载很多文稿。最好去“系统设置-Apple ID-iCloud”里看看哪些 iCloud 云盘文件已经被下载到本地选“移除下载”来释放空间。二是页面文件与内存交换。Mac 在内存压力大的时候会使用交换文件swap这些文件在/private/var/vm下面占用几个G很正常。重启一下系统就能释放不用特意处理。三是日志和统计分析。某些系统服务会周期性写入日志比如 Spotlight 的索引日志CloudKit 的同步日志。这属于正常现象但如果你发现~/Library/Logs一直在生成巨型日志可以观察一下是哪个 App 导致的然后去它的设置里关掉诊断上报。5.2 “系统数据”里的“其他”还能怎么挖如果你已经做了上面所有操作系统数据依然占着几十G那就要考虑这几个方向了Homebrew 的缓存~/Library/Caches/Homebrew可以执行brew cleanup -s。Node 的缓存~/.npm和~/Library/Caches/yarn可以执行npm cache clean --force。模拟器 / Android 虚拟设备~/.android/avd、~/Library/Android/sdk/system-images很容易有 10G 以上。旧版本系统保留的“资源库”在/Library和/System/Volumes/Data/Library下可能有些不再被系统引用的库文件建议用清理工具扫描后再删自己手动翻容易误删。5.3 常见问题速查表现象常见原因处理方式系统数据 80GTime Machine 本地快照、缓存tmutil listlocalsnapshots /删除快照清理~/Library/Caches应用程序占 30G部分 App 的容器数据卸掉不用的 App或用 App 自带的“清除缓存”电影 / 其他 50GDownloads、虚拟机镜像、iOS 备份用 GrandPerspective 扫大文件逐一定位刚清理完又满iCloud 下载、日志、页面文件调整 iCloud 优化存储重启系统关诊断上报更新系统后空间骤减旧安装包未清理用“储存空间”管理里的“系统数据”清理或删除旧更新缓存6. 日常维护建议避免下次再为新空间发愁6.1 给未来的自己定一个清理周期我现在的习惯是每个月做一次简单清理大概三步打开“关于本机-储存空间”看一眼“系统数据”有没有异常增长跑一次sudo tmutil listlocalsnapshots /把旧的本地快照删掉最后用 GrandPerspective 扫一遍~/Library/Containers和~/Downloads。如果你嫌手动麻烦可以写一个简单的 Shell 脚本定时执行缓存清理。但这里不推荐自动化删除所有缓存因为有些 App 的缓存里有未同步的数据删了可能造成登录状态丢失。6.2 善用外部存储和 iCloud 分摊压力个人强烈建议把不常用的大文件电影、安装包、旧项目压缩包移到外置硬盘或云盘不要一直留在本地。Mac 自带的“优化储存空间”功能可以自动移除已观看的 Apple TV 影片和已经上传到 iCloud 的文稿本地副本这个可以打开。用 NAS 的话还可以把虚拟机镜像和 Docker 数据目录放到网络存储上但前提是你的网络环境和 NAS 性能足够好否则虚拟机或者 Docker 的运行体验会明显下降。6.3 工具选择心得系统自带优先第三方选对不选贵清理工具五花八门我的原则是能用系统自带解决的就用自带比如“储存空间”管理、tmutil、du和GrandPerspective。如果非要买第三方工具优先考虑专门针对“磁盘占用分析”的比如 DaisyDisk 这类可视化工具不要用那种号称“一键清理”但实际操作不透明的工具。第三方清理工具有时候会误删配置文件之前有个朋友用某清理软件清完后Safari 的历史记录被清空了不说某些 App 的登录凭证全部失效得不偿失。6.4 最后的体会Mac 磁盘空间管理说到底就是和“系统数据”斗智斗勇。我踩过最大的坑就是一上来猛删Library里的东西结果把 App 的登录状态弄丢还得重新配置。后来学聪明了先看快照再看缓存最后才动配置类数据。这套流程走下来我的系统数据从原来的 105G 降到了 30G 左右而且保持稳定。如果你也被这个问题困扰按照这篇文章的顺序从第一步开始试应该有不错的收获。
返回列表