Mac 本地快照占用空间问题

Mac 本地快照占用空间问题

问题描述

在使用 Mac 的过程中,可能遇到如下问题:

当我们在 App Store 中下载一个比较大的软件时(如 Xcode,>6GB),弹出对话框提示说:“可用的磁盘空间不足,无法安装此产品”。

这时,我们点击菜单栏左上角”🍎”图标->“关于本机”->“储存空间”,或查看 Finder(访达)底部,发现显示的可用空间还有50GB,怎么可能“空间不足呢”?

带着疑问,我们又尝试使用其他方法查看磁盘剩余空间:如果你稍微了解 Unix/Linux,我想这时你的一个可能选择一定会是 “$ df -h”,而如果你对前面这句话不甚了解或一无所知对话,你可以打开 macOS 系统自带的“磁盘工具”。

通过前者的做法你可能看到类似下面这样的结果:

1
2
3
4
5
6
7
[Foo@Bar-MacBook:] 00:00  ~ !502 $ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s1 113Gi 96Gi 13Gi 84% 1225588 9223372036853550219 0% /
devfs 331Ki 331Ki 0Bi 100% 1146 0 100% /dev
/dev/disk1s4 113Gi 3.0Gi 13Gi 9% 3 9223372036854775804 0% /private/var/vm
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home

不用解释(如果你真的是我说的前者,否则,请看下一段),你吃惊地发现系统可用空间只有13GB了😱!

而在“磁盘工具”中你可以看见图条展示的可用“实际可用”只有13.34G,下面还写有一条”可用: 50GB(36.66GB可清除)”。🤔

“可清除”? 什么意思? 怎么清除? 到头来还是不能用嘛!

解决方案

我知道你急于解决问题,而不是看我写问题分析的过程,所以,先贴出解决方案。若有兴趣,再请一瞥最后的问题分析。

  1. 打开终端(如果不知道可以 command+空格 聚焦搜索 “终端.app”),输入如下指令,回车:
1
tmutil listlocalsnapshotdates

然后,你会看到输出这样的东西:

1
2
3
4
5
Snapshot dates for all disks:
2066-06-05-223724
2066-06-05-230056
2066-06-06-053724
2066-06-06-060056
  1. 然后,再分别键入指令 tmutil deletelocalsnapshots <snapshot_date>,把里面的 ”<snapshot_date>“ 换成你在上面看到的某一行日期,回车后稍等,看到:
1
Deleted local snapshot '2066-06-05-223724'

嗯,删了一个某种东西,不管他是什么,反正可用可用磁盘空间会增大吧,故如法炮制,继续tmutil deletelocalsnapshots 干掉刚才 tmutil listlocalsnapshotdates 出来的所有日期。

  1. 完成后,稍等几分钟,再 df -h 或打开”磁盘工具”,你会发现,实际可用空间大了几十G,之前的可清除,被我们清除了😊!

  2. 这时再尝试安装之前的软件就可以成功了。

问题解决💪!

P.S. 参考”文本式截图”😜:

1
2
3
4
5
6
7
[foo@His-MacBook:] 06:06  ~ !501 $ tmutil listlocalsnapshotdates
Snapshot dates for all disks:
2066-06-20-133724
2066-06-20-140056
[foo@His-MacBook:] 06:06 ~ !502 $ tmutil deletelocalsnapshots 2066-06-20-133724
Deleted local snapshot '2066-06-20-133724'
[foo@His-MacBook:] 06:06 ~ !503 $

【注】我也经历过在上述操作后完全没解决问题的情况。而在我做完上述所有操作并且重启,再重复一遍这些操作后,It works.

问题分析

好的,问题解决了,但为什么可以这样操作呢?答案就藏在我们解决的办法里。

首先,“tmutil” 是什么东西,通过 $ whatis tmutil,我们可以知道,它的学名叫做“时间机器实用工具(Time Machine utility)”,又通过 $ man tmutil,我们会明白,我们刚才是列出(listlocalsnapshotdates)并逐个删除(deletelocalsnapshots)了磁盘中储存的“时间机器本地快照(local Time Machine snapshots)”。

现在,我们知道了占用我们”可清除”的磁盘空间、还逍遥“访达”外、不为”关于本机“所知的真凶是谁了————万恶的“本地快照”。接下来,我们打算人肉搜索,揭开它丑陋的外衣!

大肆 Google 后,我们在 Apple 官网找到了一篇名为 “关于“时间机器”本地快照” 的文章,里面有记载:

您的“时间机器”备份磁盘有时可能不可用,因此“时间机器”还会将某些备份储存在您的 Mac 上。这些备份称作本地快照。
您无需考虑本地快照所占用的储存空间大小,因为它们不会占用诸如下载文件、拷贝文件或安装新软件等任务所需的空间。
您的 Mac 将快照占用的空间计为可用储存空间。即便如此,“时间机器”只会将快照储存在具有大量可用空间的磁盘上,并且会在快照过旧或其他内容需要空间时自动删除相应的快照。

emmm,这就可以解释问题了。这个自动的快照本来是不应该影响我们下载安装软件的,但可能它有点抽不听系统使唤了。

我们的解决方案是手动删除了那些快照,当然,读完了 Apple 的文档,我们知道也可以通过设置”取消选择’自动备份‘”来达到同样的效果。但!是!,这些快照平时感觉用处并不大,但偶尔或许还真有大用(备份这种东西就像保险一样,希望一辈子都用不到,但该买的还是应该买),所以 Apple 和我们都并不推荐取消这个功能,我们只要在不时之需到来时,懂得如何手动释放一些空间就好了。

That’s it.😉