如何查找并安全删除 Mac 大文件
查找磁盘占用最快的办法是测量,不是在 Finder 里逐个翻文件夹。测量结果仍要结合文件用途判断,40 GB 的照片图库和 40 GB 的安装包不能用同一种方式处理。APFS 快照、克隆文件和可清除空间还会让两个正确的工具显示不同总数。
文件总和为什么对不上磁盘占用
现代 Mac 使用 APFS 文件系统,它统计空间的方式与 Finder 不完全相同,最容易造成差异的是本地快照和可清除空间。
本地快照会在两次 Time Machine 备份之间保存磁盘状态。一个文件已经删除,只要快照仍引用它,旧数据块就可能继续占用空间。Apple 说明每小时快照通常会保留约 24 小时,并在到期或空间不足时自动删除。列出本地快照:
tmutil listlocalsnapshots /
可清除空间包括缓存、本地快照和可以重新下载的内容,macOS 会在需要容量时自动回收。Finder 可能把这部分计入可用空间,但它不是一个可以稳定手动清空的目录。
用下面几条命令核对:
df -h /
diskutil apfs list
diskutil apfs listSnapshots /
df 显示已挂载文件系统认为已用和可用的容量,diskutil apfs list 显示共享容器、卷与剩余空间,diskutil apfs listSnapshots / 列出启动卷上的快照。把这些结果放在一起,可以分清普通文件、快照和共享 APFS 容量。
用终端测量目录
du 是查找大目录最直接的工具:
du -sh ~/* ~/Library 2>/dev/null | sort -h
-s 为每一项给出汇总,-h 使用容易阅读的容量单位,sort -h 把最大的结果排在最后。每次只深入一个大目录,不要一开始就扫描整个磁盘。受保护的应用数据可能需要给终端“完全磁盘访问权限”,云端目录或开发者文件很多时,扫描也会花较长时间。
目录数字不一定等于物理分配。硬链接会给同一份数据多个文件名,APFS 克隆会在副本发生修改前共享数据块。du 适合找候选项,高影响删除前还应结合 Finder 的“显示简介”和 APFS 容量结果判断。
查找个人目录中的单个大文件:
find ~/Downloads ~/Movies ~/Desktop -type f -size +500M -print 2>/dev/null
从下载、影片和桌面这类自己管理的目录开始,可以找到遗忘的视频导出、磁盘映像与压缩包,又不会钻进每个应用数据库。确有需要时再增加扫描根目录。
喜欢终端交互界面时,可以用 ncdu 按大小浏览指定目录。先把它当作只读的发现工具,确认候选文件后在 Finder 中移到废纸篓,不要直接在陌生目录树里删除。
快照或可清除空间很大时怎么办
先释放一部分明确由自己管理的实际文件,macOS 获得工作余量后,会继续缩减本地快照和可清除缓存。重新连接 Time Machine 磁盘可以补齐备份历史,但它不是手动清快照的命令。多数情况下,不需要强制清理这两类空间。
用树状图查看整个磁盘
终端里的数字很准确,但同时比较整个磁盘时不够直观。树状图把文件夹画成按容量缩放的矩形,一眼就能看到空间主要集中在哪里。Mole 的“分析”视图会从磁盘根目录开始绘制,点击区块即可深入,并能在 Finder 中显示文件,或通过右键菜单确认大小后移到废纸篓。主目录等导航根节点没有删除入口,避免误删结构性目录。命令和树状图回答的是同一个问题,可以选择更顺手的方式。
磁盘分析器为什么能更快
简单脚本会遍历所有目录,对每个文件执行 stat,把结果全部相加后再排序。面对数百万个小文件时,这种方式既慢又占内存。Mole 的开源命令行工具在 cmd/analyze 中采用有上限的并发,并去重硬链接。原生 App 使用独立的 Swift 扫描器,但思路相同。
du 子进程数量,队列限制待处理工作,硬链接去重保证同一字节只统计一次,Top-N 堆则避免排序整棵目录树。扫描器会分别限制不同资源。目录工作池按 CPU 核心数在 2 到 12 之间调整,du 子进程最多同时运行 4 个,因为更多 du 只会让磁盘来回争抢。队列也有上限,避免待处理目录堆成数千个任务。
扫描时只保留最大的结果。目录使用一个保留前 30 项的最小堆,文件使用另一个保留前 20 项的最小堆。堆满后,新结果只与当前最小项比较,没有更大就直接丢弃,因此不必把数百万项全部放入内存排序。
硬链接会让一个文件出现多个名字。扫描器记录第一次见到的 (device, inode) 组合,再次遇到时跳过,使总数与 du 更接近。依赖这次去重顺序得到的目录大小不会写入缓存,否则后续单独扫描可能读取到错误结果。
先分类,再决定是否删除
大文件可以分成三类:
- 可替代内容,比如确认过的安装包、能够重新构建的输出,以及应用明确说明的缓存。删除前要考虑重新下载或构建的成本。
- 个人或工作数据,比如照片、信息、项目归档、虚拟机磁盘、模型权重和设备备份。通过对应应用导出、备份或停用。
- 由应用或系统管理的内容,比如包管理器数据库、容器、照片或邮件资料库、快照和
/System下的文件。使用应用提供的入口,或保持不动。
如果大目录属于已经不用的应用,先走应用的正式卸载流程,再检查它留下的文件。普通文件先移到废纸篓,确认应用和项目仍然正常后再清空。
按这个顺序查找大文件
先比较 df、APFS 容量和存储设置,确认问题来自真实物理空间,还是分类差异。接着测量选定目录,沿最大的分支逐层进入,再按归属和恢复方式给候选项分类。可替代内容优先处理,个人数据通过备份和对应应用管理,普通删除在验证完成前保留在废纸篓。更完整的清理顺序可以参考Mac 磁盘空间不足时如何安全释放空间。