为什么磁盘存储其他分类占用那么多空间

Table of Contents

1 请问,mac finder存储里的“其他”区域该如何清理? 大别您好!请问mac finder里的“其他”区域该如何清理?我在网上查了好久都没查明白,library里的caches也清理干净了,网上说的omnidisksweeper也尝试过了,都没作用,请问该如何操作啊?谢谢!!!

其实,这个问题其实已经讨论过多次,简单来说,macOS 文件系统 HFS+ 也好,APFS 也罢,在你创建文件后,它们都会动用 mds (metadata server, spotlight 功能的后端服务) 对文件进行扫描归类,创建统计数据,这个统计数据就是 关于本机,存储里面显示分类空间占用的由来。

你可以看到,文档,视频,照片,系统等分类,因为这些文件在 mds 分析后,都能够找到对应的归类,所以就有了这些统计数据。但是应用程序多种多样,产生的文件也多种多样,很多文件是系统,或应用程序创建的一些私有格式的数据文件,这些文件类型并不为 mds所知,所以,所有的这些文件都可以被归类为“其他”

其他可以包括你上面所述的系统缓存,应用程序缓存,但是它远远不限于这些,很多的磁盘占用,对于上层统计系统来说,是神秘不可知的,或者说,系统其实是知道的,但是并不想让用户知道这一部分是何物,这种类型文件,在 macOS 下,多数就是两种:

1: Time Machine 本地备份 (High Sierra 以前,这部分称为 MobileBackups)
2: APFS Localsnapshots 或 Container Pool Sharing (High Sierra 以后,如果启动分区为 APFS 格式,则为 LocalSnapshot)

分别简单介绍一下,比如笔记本类型的 Mac,当你开启 TimeMachine,并设定为一个外部磁盘为备份盘以后,那么在 Mac 与这个外部备份盘断开的时间里,一旦需要备份,则会在本地磁盘创建本地备份,当重新链接到外部备份盘以后,这些本地备份会被 Transfer 到备份盘中并由系统决定删除。在 macOS 使用了 AFPS 系统盘文件系统以后,由于 APFS 支持文件快照功能,所以在你开启 TimeMachine 后,并断开与备份盘链接的时间里,macOS 也会周期执行本地快照用于备份,由于本地快照性能远远高于 MobileBackups,所以这个几乎不会被用户察觉,在无声之间,会占用大量的本地存储空间。这部分空间,可以使用如下命令查找:

tmutil listLocalSnapshots /

snapshot-01.jpg

你也可以使用如下命令,列出快照


tmutil listLocalSnapshotdates

snapshot-02.jpg

其实这部分东西,系统也是有收集信息的,但是用户往往看不到,或者比较难看到,对于以上的这类本地快照,我这里大概进行了计算

0.33+0.12+0.21+0.06+0.09+0.05+0.08+0.05+0.08+0.11+0.13+0.54+0.32+0.35+0.1+0.33+0.09+0.20+1.6+0.09+0.14+0.17+0.43+1.42+6.01

这个传说中的本地快照怎么出现呢?我们可以首先在下载文件夹中创建一个文件夹,名字叫 snps 好了,然后我们使用命令

mount_apfs -s com.apple.TimeMachine.2019-12-28-091442.local / ~/Downloads/snps


snapshot-03.jpg

以上命令的作用是将一个 Snapshot 挂载到文件系统中查看,我们通过 tmutil listLocalSnapshots / 查找到的本地快照列表,选择其中一个进行挂载即可,这时,Downloads 文件夹中的 snps 就会变为类似上图显示的磁盘图标,这便是本地快照了。 所以,到这里问题其实应该就很清楚了,这些删除不了的快照应该怎么办呢?还要从 tmutil 里面找办法,这个命令提供了两个子命令可以针对性的解决问题:

1. tmutil deletelocalsnapshots 
2. tmutil thinlocalsnapshots

第一个很简单也很暴力,直接删除某个快照,参数可以使用从 tmutil listLocalSnapshotdates 命令获取的快照时间作为参数即可,如

sudo tmutil deletelocalsnapshots 2019-12-27-161408


或者我们选用更为智能方式,让系统来根据用户的意向自动判定删除项目

tmutil thinlocalsnapshots / 16106127360 4


这个命令看起来很诡异,我来解释一下,由于我们默认的这些都是对于系统盘快照的操作,所以 / 就表示了我们的系统根目录分区,如果你想要删除其他分区下的快照,这地方的参数要做改变。16106127360 则是 15GB 的 bytes 表示,也就是说,我这条命令希望系统释放 15GB 存储空间给我。4,表示 most urgency,说白了也就是立刻马上赶紧麻溜的别墨迹。这个级别从 1-4 ,4为最紧急,开启这个选项后,系统会立即终止所有未完成的备份并且把所有快照按照空间大小从高到低排列,从占用最大的开始删,一直到释放到用户指定空间为止。如果是 1,则系统会继续进行当前的本地快照备份,完成后,把所有快照从旧到新排列,从最旧的开始删,一直到释放所需空间为止。 
 所以,很多时候,对于其它来说你是不用太关心的,所谓删除 cache 这类,属于情急之下的从权操作,不应该作为日常的系统维护手段,因为它实在没有太多效果,对于本地快照这类,除非事出紧急,否则一般不要选择 4 ,也不要手工指定删除的快照,因为这样的话,很多未沉降到外部主备份设备中的数据改变会丢失,也是就说,当你删除这些快照前,没有链接外部主备份系统时,删除这些快照也就是删除了备份数据,很多东西你会找不回来,切记。

source: https://weibo.com/ttwenda/p/show?id=2310684454356547141643