01 前言

在2020年秋季,Apple发布了MacOS 新版本 Big Sur和基于新处理器M1的Macbook Air等设备,新系统本身就多占用了将近5G的空间;而为了适配基于ARM架构的M1处理器,很多App都更新为通用二进制文件,同时支持Intel和M1两种CPU,使得App的大小增幅达到10%~50%。

虽然现在硬盘空间越做越大,但是随着MacOS系统与App们的不断更新,大家在使用了Mac一段时间后,经常会面临硬盘空间不够用的情况。特别在去年大家升级到最新的Big Sur系统之后,这一状况尤为突出。

出现硬盘空间不足的时候,大家通常都会点击  -> 「关于本机」 -> 「存储空间」 查看硬盘的空间占用情况。

系统会将存储空间根据不同文件类别所占的空间大小显示在条状图上,大部分类型看文字都比较好理解,但对于“其他”这一类很多小伙伴都感觉很困惑,会产生一些问题:

  1. “其他”这个类别具体包含什么?
  2. 为何有时候占了特别大的空间?
  3. 而且点击「管理」后,为何不能对这个类别做任何操作?
  4. 这部分空间该如何释放呢?

着急想看问题答案的小伙伴,可以直接跳到文末。

要解决这些疑问,我们还要从系统究竟是如何划分这些类别开始说起。

02 存储空间中文件的类别与分析

系统将存储空间中的文件一共划分为14个类别,我画了张图,便于大家理解:

那么这些类别分别具体包含了哪些文件呢?

  • 视频、音乐、图书和播客:使用「视频」、「音乐」、「图书
    和「播客」这四 App 购买和下载的内容,可以从 Mac 移除和再次下载。
  • 邮件:使用「邮件」这个 App 所接受的邮件和附件。
  • 信息:包含「信息」这个App 的对话内容,其中包括附件。
  • 开发者:包含「Xcode」的缓存和项目构建数据和索引。
  • 音乐创作:包含库乐队、Logic 和 MainStage 内容。
  • App:包括 Mac 上安装的所有 App(不包括系统自带的无法卸载的应用程序,例如「通讯录」、「邮件」、「Safari」等),统计的空间大小为App本身所占空间,不包含其运行时的数据文件。
  • iOS 文件:包含使用 Mac 对 iOS 进行备份的备份数据和固件。
  • iCloud 云盘:包含储存在 iCloud 云盘中的所有文件。如果使用了“启用iCloud桌面和文稿”,还可能包括“桌面”和“文稿”文件夹中的文件。
  • 照片:储在「照片」App中的照片和视频。
  • 废纸篓:包含已删除的项目(从 iCloud 云盘中删除的项目不包括在储存空间总量中)。
  • 其他用户:包含 Mac 上由其他用户帐户所创建和修改的文件。
  • 文稿:包含个人文件中,但未包括在上述类别中的文件,几乎包含所有个人创建或下载的office文档、设计图片、电影和电子书等。
  • 系统:包含 macOS 系统本身和系统自带无法卸载的应用程序和文件(例如「通讯录」、「邮件」、「Safari」等)。

那 “其他” 包含什么内容呢?

  • 其他:硬盘中包含不属于上述所列类别的文件都在“其他”中。此类别主要包括
  1. 系统运行时所使用的文件和数据,例如日志文件、缓存、VM 文件和其他运行时系统资源,临时文件和字体等。
  2. 第三方App 的支持文件(日志、缓存、配置文件、临时文件和数据库等资源)和插件。
  • 日志 是用来记录 App 运行时的状态信息,常用于排查程序bug。
  • 缓存 是为了提高 App 运行速度,常用于存储经常访问的数据图片等,例如浏览器访问网页时会将常访问网页的页面内容和图片放在缓存中。
  • 配置文件 用来存储App 的一些偏好设置信息,
  • 临时文件和数据库 是程序运行时生成或下载的数据,例如Adobe Photoshop中项目的索引、导入的各种素材包和滤镜;微信的登录信息、聊天记录和附件等等。

看到这里,对于 “其他” 包含了哪些文件?大家都应该有所了解了。随着App的不断使用,某些App对日志缓存大小不做限制、某些App的临时文件和数据库文件不断积累却不提醒用户进行管理,终究会造成这个类别在某些小伙伴的Mac里占用特别巨大的空间。

但是由于这些 “其他” 中的文件都是系统或App运行时所使用的文件,用户不能直接接触,所以系统并不建议用户对这些文件进行直接管理,避免不当操作引起的不可预期的运行错误。这也是为什么在用户打开「管理」后,只能对除了 “系统” 和 “其他” 类别文件进行操作。

那么,我们真的不能对 “其他” 中文件进行清理了吗?回答当然不是。具体怎么做?我们先从经常使用的文件管理程序「访达」(Finder)所能接触的文件体系的角度重新梳理一下存储空间的划分。

03 「访达」(Finder)文件体系

在「访达」中系统其实为我们隐藏了很多文件,让大家只要关心自己用户名下的文件即可,如下图所示,我将所有文件划分为系统文件和用户文件两种大的类别。

有【眼睛[删除]】标识的文件属于隐藏文件,在「访达」中不可见。

而之前我们一直关注的 ”其他“ 中的文件在这个体系中处在什么位置呢?大家应该很容易猜出来,就是上图中左下角三个小方块。

其他 = 「系统运行所需文件和数据」 + 「系统自带App运行所需文件和数据」 + 「用户App运行所需文件和数据」

对于前面两个部分,属于系统文件,我不建议大家进行操作。一方面是因为系统本身和自带App对于数据的存储本身就比较克制,另一个方面是万一操作失误引起系统运行错误,那就只能重装系统,风险有点大。

所以,对于剩下的部分「用户App运行所需文件和数据」,让我们来进行分析和释放吧。

04 对 “其他” 中「用户App运行所需文件和数据」的分析和释放

首先,将这部分内容从隐藏显示在「访达」中。在「访达」中打开当前用户文件夹,在右击菜单中选中「查看显示选项」,然后勾选显示“资源库”文件夹。

然后在「访达」中用户文件夹下多了一个“Library“(资源库)文件夹。这个文件夹下存放的就是我们的目标「用户App运行所需文件和数据」。

在此文件夹中,我们重点关注几个子文件夹:

  • Application Support:保存非App Store下载的App的临时文件和数据库。
  • Caches:保存非App Store下载的App的缓存文件。
  • Logs:保存非App Store下载的App的日志文件。
  • Preferences:保存非App Store下载的App的偏好设置文件。
  • Containers:保存从App Store下载的App的日志、缓存、偏好设置、临时文件和数据库。
  • Group Containers:保存使用了Group App技术的App的临时文件和数据库,例如MS Office全家桶。

在这几个文件夹下,通常会再以各个 App 的”名字“或者 “App Bundle identifier”(MacOS中APP唯一识别的ID,命名规则通常为 「com.公司名.App名」)命名子文件夹。

大家可以在「访达」的 ”Library“ 中查找App的缓存文件和日志文件,在存储空间紧张的情况下这两类文件几乎可以无脑选择删除。

而对于各个App的临时文件和数据库,我建议是在「访达」中查找占用空间特别大、占用比特别特大的App,在确定删除其数据不会丢失个人数据的前提下进行删除(例如QQ的聊天记录和附件,由于同步在云上,本地删除无风险)。

但「访达」有一个缺陷,就是无法直接显示出所有文件夹所占存储空间的大小,以至于我们没法一眼看出哪些App的数据文件占了较大的空间。所以,我通常会使用一些工具来辅助这一步骤。

05 使用一些工具来帮助释放空间

比较常见的工具有”CleanMyMac“、”DaisyDisk”、”柠檬清理“和“Cleaner One“。这里我使用”Cleaner One“,因为它是唯一一款同时提供”日志缓存清理“和”磁盘分析“功能,且这两项功能完全免费的App。

  1. 打开 Cleaner One的「垃圾文件」扫描,对于用户App的日志和缓存文件进行查找和删除。

2. 打开「磁盘分析」,选择 “Library” 进行分析临时文件和数据库,扫描完成后会出现结果页面。

左侧会按照由大到小显示当前文件夹下的子文件夹及其所占空间大小,右侧则显示各个子文件夹所占大小的饼图。看到占用空间特别大的文件夹,大家可以双击左边列表或单击右边饼图,都可以进入到所感兴趣的下一级文件夹中。就像剥洋葱一样,一层一层得深入分析App的数据文件夹,确定暂时不需要后可以删除。

强调:对于这部分文件,大家最好谨慎一些,尽量遇到一些特别大的文件再进行删除,遇到不确定的文件目录可以Google或百度一下。或者可以先删除到废纸篓,后面如果App重新运行没有问题,再清空废纸篓,给自己一个缓冲区。又或者可以暂时可以将这些文件备份到移动硬盘或网盘,必要时再移回来。

我再补充一点,其实「磁盘分析」这个功能吧,不仅能够用来分析 ”其他“ 这个类别,还可以直接选择用户目录,从而分析所有文件夹,有时候可以找到一些特别琐碎、单个文件体积小但是组合后的文件夹特别大的 “文档”。

06 总结

上面讲了那么多,现在总结回答一下之前的疑问:

Q1:”其他”这个类别具体包含什么?

其他 = 「系统运行所需文件和数据」 + 「系统自带App运行所需文件和数据」 + 「用户App运行所需文件和数据」

而App运行所需要的文件和数据主要分为日志、缓存、偏好设置、临时文件和数据库等几大类。

Q2:为何有时候占了特别大的空间?

某些App对日志缓存大小不做限制、某些App的临时文件和数据库文件不断积累却不提醒用户进行管理。例如Adobe全家桶的临时文件、Outlook的邮件、微信的聊天记录和附件等等。

Q3: 而且点击「管理」后,为何不能对这个类别做任何操作?

这类文件都是系统或App运行时所使用的文件,用户并不直接参与接触,所以系统并不建议用户对这些文件进行直接管理,避免不当操作引起的不可预期的运行错误。

Q4: 这部分空间该如何释放呢?

我只建议大家在必要时分析和释放「用户App运行时所需要的数据和文件」中的部分文件。

  1. 在「访达」中显示默认隐藏的文件夹 “Library”。手动通过App的名字或”App Bundle identifier”查找以下几个主要目录下的日志、缓存、临时文件和数据库。
  • Application Support:保存非App Store下载的App的临时文件和数据库。
  • Caches:保存非App Store下载的App的缓存文件。
  • Logs:保存非App Store下载的App的日志文件。
  • Preferences:保存非App Store下载的App的偏好设置文件。
  • Containers:保存从App Store下载的App的日志、缓存、偏好设置、临时文件和数据库。
  • Group Containers:保存使用了Group App技术的App的临时文件和数据库,例如MS Office全家桶。

对日志文件和缓存文件可以直接删除,对于临时文件和数据库需要仔细甄别后手动删除。

2. 或者使用 Cleaner One 的免费功能「垃圾文件」扫描先清除日志和缓存,然后使用「磁盘分析」扫描“Library”文件夹,快速查找占用空间特别大的App临时文件和数据库,甄别后移除或者备份到移动硬盘或网盘。

来源:Jim Ye