ARTICLE DETAIL

资讯详情

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

Mac磁盘空间清理全攻略:从180G降到40G的实战经验

Mac磁盘空间清理全攻略:从180G降到40G的实战经验 1. 从“系统数据”吃掉上百G说起Mac磁盘到底被什么塞满了很多人第一次看到“关于本机 → 储存空间”里那条“系统数据”时都会愣一下明明没存多少照片、没装几个大软件怎么系统数据能占上百G更离谱的是点进去还看不到具体是什么文件Finder里翻半天也找不到对应的大文件夹。这个现象在Mac用户里非常普遍尤其是做iOS开发、经常用Xcode、Homebrew、Docker、虚拟机的人系统数据轻松突破150G甚至200G。先把这个“系统数据”是什么讲清楚。在macOS的储存空间分类里“系统数据”其实是一个兜底分类它包含了所有无法被归入“应用程序”“照片”“文稿”“音乐”等类别的文件。换句话说它是一个垃圾桶式的统计口径里面可能装着系统缓存、日志文件、Time Machine本地快照、Xcode的DerivedData和模拟器缓存、Homebrew的下载缓存、各种应用的容器数据、iOS备份、邮件附件、Docker镜像、虚拟机磁盘文件等等。你看到的“系统数据”大不代表系统本身臃肿而是这些杂项加起来太大了。我自己的MacBook Pro 512G用了两年多某天突然提示磁盘空间不足一看系统数据占了180G。当时第一反应是系统出问题了差点重装。后来一步步排查下来发现真正的大头是Xcode的缓存和模拟器、Time Machine本地快照、还有几个被遗忘的iOS备份。清理完之后系统数据降到40G左右机器也流畅了不少。这篇文章就是把我这些年清理Mac磁盘的完整思路和实操步骤整理出来。不管你是刚入手Mac的新手还是天天跟Xcode打交道的iOS开发者或者是用Homebrew装了一堆工具的重度用户都能从里面找到适合自己的清理方案。我会从“怎么定位大文件”开始一步步讲到“哪些能删、哪些不能删、怎么删才安全”最后再分享几个我踩过的坑和长期维护的习惯。提示清理磁盘之前强烈建议先用Time Machine做一次完整备份。虽然下面提到的操作大部分是安全的但涉及删除文件的操作有备份才有底气。2. 先搞清楚空间去哪了三种定位大文件的方法清理磁盘最忌讳的就是瞎删。你得先知道空间被什么占了才能有针对性地处理。macOS自带的工具其实够用但很多人不知道怎么用。下面这三种方法从简单到深入建议按顺序来。2.1 用“储存空间”面板做初步判断点左上角苹果菜单 → 关于本机 → 更多信息 → 储存空间或者直接打开“系统设置 → 通用 → 储存空间”。这个面板会给你一个分类概览应用程序、文稿、系统数据、照片、邮件等各占多少。虽然它不能告诉你具体是哪个文件但能帮你快速判断大方向。比如如果“文稿”特别大那可能是下载文件夹或者某个项目文件夹堆积了太多东西如果“系统数据”特别大那大概率是缓存、快照、开发者工具残留。这个面板还有一个实用功能它会给出一些建议比如“清空废纸篓”“删除旧邮件附件”“优化储存空间”等可以一键处理一部分内容。但说实话这些建议能清理的量很有限真正的大头还得靠手动。我一般会先看这个面板记下“系统数据”和“文稿”的大致数值然后进入下一步精确定位。需要注意的是这个面板的统计有时候会有延迟刚删完文件不会立刻更新可以等几分钟或者重启后再看。2.2 用Finder的“计算所有大小”功能打开Finder进入你的用户主目录快捷键ShiftCommandH然后按CommandJ调出显示选项勾选“计算所有大小”。接着切换到列表视图Command2按“大小”列排序。这样你就能看到主目录下每个文件夹占了多少空间。重点看这几个文件夹资源库Library、下载Downloads、文稿Documents、桌面Desktop、影片Movies。其中资源库是最容易被忽略的因为它默认是隐藏的。你可以按CommandShift.句点来显示隐藏文件或者直接在Finder的“前往”菜单里按住Option键就能看到“资源库”选项。资源库里面有几个子文件夹是空间大户Caches缓存、Application Support应用支持文件、Containers应用容器、Developer开发者工具数据、MobileSynciOS备份。我见过最夸张的一个案例某人的MobileSync里存了十几个iOS备份每个备份20G到50G不等加起来占了300多G。这些备份是iTunes或Finder给iPhone备份时生成的很多人备份完就忘了删。2.3 用命令行工具做深度扫描如果你想要更精确的结果或者想批量处理命令行是更好的选择。macOS自带了一些很实用的命令不需要额外安装工具。查看根目录下各文件夹大小sudo du -sh /* 2/dev/null | sort -rh | head -20这个命令会列出根目录下每个文件夹的总大小按从大到小排序只显示前20个。sudo是因为有些系统文件夹需要权限才能读取。2/dev/null是为了屏蔽权限不足的报错信息。查看用户主目录下各文件夹大小du -sh ~/* 2/dev/null | sort -rh | head -20查看资源库下各文件夹大小du -sh ~/Library/* 2/dev/null | sort -rh | head -20这几个命令跑下来基本就能锁定空间大户了。我一般会重点关注这几个路径~/Library/Developer/Xcode、~/Library/Caches、~/Library/Application Support、~/Library/Containers、~/Library/MobileSync。注意du命令在扫描大量小文件时会比较慢尤其是Caches文件夹里可能有几十万个文件。建议耐心等待或者用-d 1参数限制扫描深度。3. 开发者工具是重灾区Xcode、Homebrew、Docker的清理方法如果你做iOS开发或者用Mac做开发工作那开发者工具很可能是磁盘空间的最大消耗者。Xcode一个工具就能轻松吃掉50G以上Homebrew的缓存和旧版本也能占几十GDocker的镜像和容器更是无底洞。这一章我逐个讲怎么清理。3.1 XcodeDerivedData、模拟器、归档文件Xcode占空间的地方主要有四块DerivedData、模拟器缓存、iOS DeviceSupport、Archives。DerivedData是Xcode编译项目时生成的中间产物和索引路径在~/Library/Developer/Xcode/DerivedData。这个文件夹可以放心删Xcode下次编译时会重新生成。我见过有人这个文件夹占了80G因为做过的项目太多每个项目的索引和编译缓存都堆在那里。清理方法很简单rm -rf ~/Library/Developer/Xcode/DerivedData/*删完之后第一次编译会慢一些因为要重建索引但之后就好了。建议每隔一两个月清一次或者用Xcode自带的清理功能Xcode → Settings → Locations → DerivedData旁边有个箭头点进去手动删。模拟器缓存路径在~/Library/Developer/CoreSimulator/Devices。每个模拟器设备都会占用几百M到几个G不等尤其是你装了很多App、跑了很多测试之后。可以在Xcode的Devices and Simulators里删除不用的模拟器也可以直接删文件夹xcrun simctl delete unavailable这个命令会删除所有不可用的模拟器比如旧版本iOS的模拟器。如果想彻底清理可以删掉整个Devices文件夹但这样所有模拟器都会被重置。iOS DeviceSupport路径在~/Library/Developer/Xcode/iOS DeviceSupport。每次你连接一个新版本的iOS设备Xcode都会生成对应的符号文件每个版本大概几百M到1G多。如果你支持过很多iOS版本这个文件夹可能有好几G。可以只保留最近常用的版本旧的删掉。Archives路径在~/Library/Developer/Xcode/Archives。这是你打包上传App Store时生成的归档文件每个归档可能几百M。如果已经成功上传且不需要保留本地归档可以删掉旧的。但建议至少保留最近几个版本万一需要回滚或者查符号表还能用。3.2 Homebrew缓存、旧版本、残留文件Homebrew是Mac上最常用的包管理工具但它也是磁盘空间的隐形杀手。Homebrew的缓存路径在~/Library/Caches/Homebrew里面存着下载的安装包和编译产物。时间长了可能有好几G甚至十几G。清理命令brew cleanup -s这个命令会删除所有旧版本的软件包和缓存。加上-s参数会同时清理下载缓存。如果想看能清理多少空间可以先跑brew cleanup -n-n是dry-run模式只显示会删除什么不实际执行。还有一个容易被忽略的地方是Homebrew的旧版本残留。Homebrew在升级软件时旧版本不会自动删除而是留在Cellar目录里。可以用这个命令查看brew list --versions | awk NF2如果某个软件有多个版本说明有旧版本残留。可以用brew cleanup清理或者手动删除。另外如果你卸载过Homebrew但没清理干净可能会有残留文件。检查这几个路径/usr/local/Cellar、/usr/local/var/homebrew、~/Library/Caches/Homebrew。彻底卸载Homebrew的官方脚本会帮你清理这些但如果你手动删过可能会有遗漏。3.3 Docker和虚拟机镜像、容器、磁盘文件Docker在Mac上是通过虚拟机运行的它的磁盘文件默认在~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw。这个文件会随着你拉取的镜像和运行的容器不断增大而且Docker不会自动收缩它。我见过有人这个文件占了100G以上。清理方法先删除不用的镜像和容器docker system prune -a --volumes这个命令会删除所有停止的容器、所有未被使用的镜像、所有未被使用的网络和卷。执行前确认你没有需要保留的镜像。如果只想清理部分内容可以用更温和的命令docker image prune docker container prune docker volume prune清理完之后Docker.raw文件不会自动变小。需要在Docker Desktop的设置里找到“Resources → Advanced”点击“Disk image size”旁边的“Resize”或者直接删除Docker.raw然后重启Docker注意这会丢失所有镜像和容器。更安全的做法是在Docker Desktop的Troubleshoot里选择“Clean / Purge data”。虚拟机的磁盘文件也是类似情况。Parallels Desktop、VMware Fusion、VirtualBox的虚拟机文件都在你的用户目录下每个虚拟机可能几十G。如果不用了直接删除对应的虚拟机文件。4. 系统层面的空间大户Time Machine快照、缓存、日志除了开发者工具macOS本身也会产生大量占用空间的文件。这些文件平时看不见但积累起来很可观。这一章讲三个主要的Time Machine本地快照、系统缓存、日志文件。4.1 Time Machine本地快照看不见的空间杀手Time Machine是Mac的备份工具但很多人不知道它除了备份到外置硬盘还会在本地磁盘上创建快照。这些快照用于在备份间隙保护你的数据但会占用大量空间。尤其是当你很久没连接备份硬盘时本地快照会越积越多。查看本地快照tmutil listlocalsnapshots /这个命令会列出所有本地快照每个快照都有一个时间戳。如果看到几十个快照那占用的空间可能相当可观。删除本地快照tmutil deletelocalsnapshots /这个命令会删除所有本地快照。如果想删除特定时间点的快照可以用tmutil deletelocalsnapshots 2024-01-15-123456删除本地快照不会影响你的实际数据也不会影响外置硬盘上的Time Machine备份。它只是释放了本地磁盘上用于快照的空间。我一般会在磁盘空间紧张时执行一次能释放几G到几十G不等。注意如果你的Time Machine备份硬盘一直连着本地快照会自动管理不需要手动删除。只有在长期不备份的情况下快照才会堆积。4.2 系统缓存Caches文件夹里有什么~/Library/Caches是系统和应用存放缓存文件的地方。大部分缓存可以安全删除应用会在需要时重新生成。但有些缓存删除后会导致应用重新下载数据或者重新登录所以要有选择地清理。先看看Caches里哪些文件夹最大du -sh ~/Library/Caches/* 2/dev/null | sort -rh | head -20常见的缓存大户包括浏览器缓存Chrome、Safari、开发工具缓存Xcode、Android Studio、设计软件缓存Adobe系列、通讯软件缓存微信、QQ。其中微信的缓存特别容易堆积因为聊天记录里的图片、视频、文件都会缓存到本地。清理Caches文件夹时建议不要直接全删而是针对性地删除大文件夹。比如rm -rf ~/Library/Caches/com.apple.Safari/* rm -rf ~/Library/Caches/Google/Chrome/*对于微信可以在应用内的设置里清理缓存这样更安全。如果手动删路径在~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat但直接删可能会导致聊天记录丢失建议用应用内清理功能。4.3 日志文件/var/log和~/Library/Logs系统日志和应用日志也会占用空间虽然通常不大但长期不清理也可能积累到几G。系统日志在/var/log需要sudo权限查看sudo du -sh /var/log/* 2/dev/null | sort -rh | head -10应用日志在~/Library/Logsdu -sh ~/Library/Logs/* 2/dev/null | sort -rh | head -10日志文件一般可以安全删除系统会重新生成。但有些日志对于排查问题有用建议保留最近几天的。可以用这个命令删除30天前的日志find ~/Library/Logs -name *.log -mtime 30 -delete对于系统日志不建议手动删除可以用sudo log erase --all来清理但会删除所有日志包括最近的。一般不需要频繁清理日志除非确实占用了很大空间。5. 那些容易被忽略的角落iOS备份、邮件附件、下载文件夹除了上面说的那些还有几个地方经常被忽略但可能藏着大量空间。这一章讲三个iOS备份、邮件附件、下载文件夹。5.1 iOS备份MobileSync文件夹如果你用Finder或iTunes给iPhone或iPad做过备份备份文件会存在~/Library/Application Support/MobileSync/Backup。每个备份可能20G到100G不等取决于设备容量和备份内容。很多人换手机或者备份完就忘了这些备份一直躺在硬盘里。查看备份ls -lh ~/Library/Application Support/MobileSync/Backup/每个文件夹对应一个备份文件夹名是设备的UDID。你可以根据修改日期判断哪个是旧的。删除旧备份rm -rf ~/Library/Application Support/MobileSync/Backup/UDID或者直接在Finder里打开这个路径手动删除。更推荐的做法是在Finder的“管理备份”里删除打开Finder → 前往 → 连接服务器或者直接连上iPhone在设备的“管理备份”里可以看到所有备份并删除。5.2 邮件附件Mail DownloadsMac自带的邮件应用会把附件下载到本地路径在~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads。如果你经常收发带大附件的邮件这个文件夹可能有好几G。清理方法在邮件应用里选择“邮箱 → 清除已删除项目”然后在Finder里删除Mail Downloads里的内容。或者直接用命令rm -rf ~/Library/Containers/com.apple.mail/Data/Library/Mail Downloads/*删除后邮件应用会在需要时重新下载附件不影响邮件本身。5.3 下载文件夹和桌面最容易被忽视的地方下载文件夹和桌面是很多人存放临时文件的地方时间长了就忘了清理。我见过有人下载文件夹里存了几十个G的安装包、视频、压缩包桌面也堆满了各种文件。清理方法很简单打开Finder进入下载文件夹按大小排序把不需要的删掉。桌面也一样。建议养成习惯每周花五分钟清理一次下载文件夹把有用的文件归档到文稿文件夹没用的直接删。另外废纸篓也要记得清空。有时候删了文件但忘了清空废纸篓空间并没有真正释放。可以在Finder里按CommandShiftDelete清空废纸篓或者在废纸篓上右键选择“清倒废纸篓”。6. 清理之后怎么防止再次爆满长期维护习惯清理一次能解决眼前问题但如果不养成习惯过几个月又会爆满。这一章分享几个我长期使用的维护方法让磁盘空间保持在一个健康水平。6.1 设置定期自动清理任务macOS自带的“储存空间”面板里有一个“优化储存空间”选项可以自动删除看过的影片和电视节目、只保留最近的邮件附件等。虽然功能有限但开着没坏处。更彻底的方法是设置定时任务。可以用launchd或者cron来定期执行清理脚本。比如我写了一个简单的脚本每周执行一次清理DerivedData、Homebrew缓存、本地快照#!/bin/bash # cleanup.sh rm -rf ~/Library/Developer/Xcode/DerivedData/* brew cleanup -s tmutil deletelocalsnapshots / find ~/Library/Logs -name *.log -mtime 30 -delete然后用crontab -e添加一行0 3 * * 0 /bin/bash ~/scripts/cleanup.sh这表示每周日凌晨3点执行清理脚本。注意cron在macOS上需要给终端完全磁盘访问权限否则有些路径读不了。6.2 用工具监控磁盘空间变化除了手动检查还可以用一些工具来监控磁盘空间。我常用的是ncdu一个命令行的磁盘使用分析工具比du更直观brew install ncdu ncdu ~/Library它会扫描指定目录然后显示一个可交互的界面你可以用方向键浏览各个文件夹的大小按d删除文件。非常方便。图形化工具方面DaisyDisk和OmniDiskSweeper都不错可以直观地看到磁盘上哪些文件最大。DaisyDisk是付费的但界面很漂亮OmniDiskSweeper免费功能也够用。6.3 几个我踩过的坑和注意事项最后分享几个我在清理磁盘时踩过的坑希望能帮你避免同样的问题。第一个坑删了~/Library/Caches里的某些文件夹后应用需要重新登录或者重新下载数据。比如Adobe系列软件删了缓存后下次打开会重新下载字体和预设。所以删之前最好确认一下这个缓存删了会不会有影响。第二个坑tmutil deletelocalsnapshots /在某些macOS版本上需要关闭SIP系统完整性保护才能执行。如果提示权限不足可以尝试在恢复模式下执行或者用sudo。但关闭SIP有安全风险不建议普通用户操作。第三个坑用第三方清理工具时要注意有些工具会误删系统文件或者重要缓存。我一般只用系统自带的功能和命令行工具第三方工具只用来做扫描分析不用来执行删除。第四个坑清理Xcode的DeviceSupport时如果删了当前正在使用的iOS版本的符号文件下次调试时Xcode会重新生成但生成过程可能需要几分钟。建议保留最近两个iOS版本的符号文件。第五个坑Docker的Docker.raw文件删除后所有镜像和容器都会丢失。如果里面有重要的数据库或者配置一定要先备份。我一般会定期把重要的Docker镜像推送到私有仓库这样即使本地删了也能拉回来。提示清理磁盘是一个持续的过程不是一次性的任务。建议每个月花十分钟检查一下磁盘空间及时清理不需要的文件。这样就不会出现突然爆满的情况。7. 一个真实的清理案例从180G降到40G的完整过程最后分享一个我自己的真实案例。去年我的MacBook Pro提示磁盘空间不足一看系统数据占了180G。我按照下面的步骤一步步清理最终降到了40G左右。第一步用du -sh ~/Library/*扫描资源库发现Developer文件夹占了90G。进去一看Xcode的DerivedData占了50GiOS DeviceSupport占了20GArchives占了15GCoreSimulator占了5G。清理DerivedData和旧的DeviceSupport后释放了约60G。第二步用tmutil listlocalsnapshots /查看本地快照发现有30多个快照。执行tmutil deletelocalsnapshots /后释放了约30G。第三步检查~/Library/Caches发现Chrome缓存占了8G微信缓存占了12G。清理Chrome缓存和微信缓存后释放了约15G。第四步检查~/Library/Application Support/MobileSync/Backup发现有三个旧的iOS备份加起来约40G。删除旧备份后释放了约35G。第五步清理下载文件夹和废纸篓释放了约5G。总共释放了约145G系统数据从180G降到了35G左右。整个过程花了大概一个小时大部分时间是在等待du命令扫描和确认哪些文件可以删。这个案例说明Mac的“系统数据”虽然看起来神秘但只要找对方法大部分都是可以安全清理的。关键是要有耐心一步步排查不要急于求成。清理完之后我设置了每周自动清理任务现在磁盘空间一直保持在健康水平。
返回列表