针对开发环境下 macOS 磁盘空间不足的分析与清理实操指南。提供秒级定位方法与分级清理命令,避免全盘低效扫描。
极速分析方案
常规 du -sh 全盘递归扫描会因为 node_modules、包管理器缓存和聊天软件中的海量小文件导致遍历超时。日常推荐采用以下秒级定位方式:
- 系统内置 Spotlight 元数据(0 耗时):
- 打开「系统设置」->「通用」->「储存空间」。
- 查看彩色分布条确定主要占用类型(文稿、开发者、系统数据)。
- 点击「文稿」右侧感叹号,在「大文件」标签页下直接筛选出超过 100MB / 1GB 的孤立大文件。
- 并发工具多核扫描:
- 使用
gdu替代传统单线程du:brew install gdu && gdu ~。
- 使用
- 高频大户点对点探测:
- 跳过全盘遍历,直接检查已知的核心缓存目录(Colima、下载、微信、包缓存)。
高优先级清理项(P0 / P1)
按收益与风险分层,优先执行见效快、无业务副作用的操作:
- APFS 本地时间机器快照(P0):
- 现象:已删除大文件但“系统数据”依然居高不下,空间未释放。
- 原因:本地时间机器快照将删除块锁定在可清除空间中。
- 操作:执行平滑回收命令
sudo tmutil thinlocalsnapshots / 32212254720 4。
- Docker / Colima 镜像与构建缓存(P0):
- 现象:虚拟机虚拟磁盘膨胀(通常在
~/.colima占用 20GB+)。 - 操作:
- 启动服务后清理未引用资源:
colima start && docker system prune -a --volumes -f。 - 若需彻底缩容磁盘镜像,直接重建实例:
colima stop && colima delete && colima start。
- 启动服务后清理未引用资源:
- 现象:虚拟机虚拟磁盘膨胀(通常在
- 历史项目闲置
node_modules(P0):- 现象:
~/projj或开发目录沉淀几十个旧项目的依赖库,占用数十 GB。 - 操作:运行
npx npkill -d ~/projj,按修改时间排序,使用空格键交互式删除长期不用的依赖包。
- 现象:
- Homebrew 历史缓存与旧版本(P0):
- 操作:
brew cleanup --prune=all -s && rm -rf $(brew --cache)。
- 操作:
- 包管理器全局缓存(P1):
- pnpm:
pnpm store prune(清理未被硬链接引用的存储块)。 - npm:
npm cache clean --force。
- pnpm:
- Xcode 派生数据与旧模拟器(P1):
- DerivedData:
rm -rf ~/Library/Developer/Xcode/DerivedData/*。 - 模拟器缓存:
xcrun simctl erase all。
- DerivedData:
- 下载目录与废纸篓(P1):
- 下载目录:排查
~/Downloads中残留的.dmg、.pkg、.iso等大文件。 - 废纸篓:
rm -rf ~/.Trash/*。
- 下载目录:排查
需要手动确认的大户
- 微信 / 办公软件:
~/Library/Containers/com.tencent.xinWeChat包含海量聊天图片与视频。切勿直接在终端rm -rf,应在微信「设置 - 通用 - 存储空间」中通过官方界面按需清理。- iOS 本地备份:检查
~/Library/Application Support/MobileSync/Backup,若不需要整机本地镜像可直接删除旧设备目录。
常用一键清理速查脚本
复制以下命令可在终端一键清理主要无风险缓存:
# 1. 缩减并回收 APFS 本地快照
sudo tmutil thinlocalsnapshots / 32212254720 4
# 2. 清理 Homebrew 安装包缓存与历史版本
brew cleanup --prune=all -s
rm -rf $(brew --cache)
# 3. 清理 Docker/Colima 容器与 BuildKit 缓存
docker system prune -a --volumes -f
# 4. 清理前端包管理器全局孤立包
pnpm store prune 2>/dev/null
npm cache clean --force 2>/dev/null
# 5. 清理 Xcode 派生构建产物(若有)
rm -rf ~/Library/Developer/Xcode/DerivedData/* 2>/dev/null
# 6. 清理应用运行日志
rm -rf ~/Library/Logs/* 2>/dev/null日常空间维护建议
- 工作区依赖定期瘦身:每个月跑一次
npx npkill -d ~/projj,保持代码区依赖轻量。 - 避免 BuildKit 无限制膨胀:定期对 Docker 运行
docker system prune -f。 - 添加快捷别名:可在
~/.zshrc中配置别名命令,例如:alias clean-brew="brew cleanup --prune=all -s"alias clean-docker="docker system prune -f"alias clean-pnpm="pnpm store prune"