修复 Mac「磁盘空间几乎已满」
按「诊断—修复—验证」的流程解决 macOS 磁盘空间不足:测量真实可用空间、查看 APFS 卷布局、清理本地 Time Machine 快照,并确认空间真正释放。
快速开始
macOS 在启动盘快满时会弹出警告,但不会告诉你空间被什么吃掉了——而且 APFS 卷和隐藏快照常常让数字看起来很矛盾。本指南带你准确测量问题、清理最常见的隐藏元凶(本地 Time Machine 快照),并验证空间是否真的回来了。
症状
先弄清楚磁盘到底有多满
删任何东西之前,先拿到准确的数字。df -h 会以人类可读的单位列出每个卷的容量、已用和可用空间;在新版 macOS 上,用户文件实际存放在 Data 卷,所以那个也要查。如果可用空间只剩几个 GB 或更少,问题就坐实了。稍后清理完再跑一次,就能看出效果。
df -h 以易读的单位报告每个卷的容量、已用空间和可用空间;在新版 macOS 上还能看到真正存放用户数据的 APFS 数据卷。
$ df -h
df -h /
df -h /System/Volumes/Data看清 APFS 容器的整体布局
APFS 的多个卷共享同一块空间池,所以某个卷显示快满时,容器整体可能还有余量(反之亦然)。diskutil apfs list 会列出每个卷的容量、已用空间和挂载的快照,让你在动手删除之前先弄清空间压力到底在哪里。
查看完整的 APFS 容器结构:每个卷的容量、占用和快照情况。
$ diskutil apfs list排查本机 Time Machine 快照
本地 APFS 快照是 macOS 上最常见的隐藏空间杀手之一——它们可能悄悄占用几十 GB,让删掉的文件并没有真正释放空间。列出启动盘上的所有快照;如果近期快照一长串,基本就是元凶。不再需要的快照可以按对应日期删除。
查看启动盘上所有本地 APFS 快照,并删除不再需要的快照来释放空间。
$ tmutil listlocalsnapshots /▾ 撤销
$ tmutil deletelocalsnapshots <snapshot-date>确认 Time Machine 的备份目的地
如果上面的快照删了又长出来,就查一下 Time Machine 的备份目的地。当目的地缺失或连不上时,macOS 会改在启动盘上保留本地快照——把目的地修好(比如重新指向外置硬盘),才能从源头止住本地空间的堆积。
在终端里直接查看“时间机器”当前使用的备份目标磁盘或网络共享。
$ tmutil destinationinfo推出用完的磁盘映像和外接盘
已挂载的 DMG、安装镜像和 U 盘可能缓存了大量数据。用完之后,一条命令就能把所有可推出的卷一起安全弹出——零风险,既能腾出空间,也能排除外置卷干扰判断。
一步安全卸载所有可推出卷:U 盘、SD 卡、DMG 镜像等。
$ osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'确认空间确实释放了
再跑一遍开头的空间检查,重点看 Data 卷。可用数字应该比之前大约多出你清理掉的量。注意:删除快照后 APFS 可能需要一两分钟才完成空间核算——如果数字没变,稍等片刻再查一次。
df -h 以易读的单位报告每个卷的容量、已用空间和可用空间;在新版 macOS 上还能看到真正存放用户数据的 APFS 数据卷。
$ df -h
df -h /
df -h /System/Volumes/Data如何确认已解决
重新检查 Data 卷的可用空间:数字应该比清理前多出大致相当的量。
一键全部撤销
上面每一条命令都可以撤销。按此顺序执行即可全部还原。
$ tmutil deletelocalsnapshots <snapshot-date>执行前请先确认——部分步骤之间可能并非相互独立。
来源
- df — display free disk space (macOS)依据: Documents -h human-readable sizes and per-file argument behavior.
- macOS diskutil — disk and volume management依据: Documents diskutil apfs list, diskutil info and related volume commands.
- macOS tmutil — Time Machine utility依据: Documents listlocalsnapshots, deletelocalsnapshots, and snapshot restore subcommands of tmutil.
- If you need more space for an update on your Mac依据: Apple explains that local Time Machine snapshots occupy space and are managed automatically/purged under pressure.
- TMUTIL(8) - macOS manual page依据: The manual page contains 'tmutil destinationinfo' and describes it as printing information about the destination(s) configured for Time Machine backups.
- macOS osascript command reference依据: osascript runs AppleScript from the Terminal; Finder's eject command safely unmounts every ejectable disk.
最后验证: 2026-09-21