Mac 上的垃圾文件是什么?可以放心删除吗?
App 会写入大量并非严格必需的文件。缓存是 App 可以重新获取或重建的某些内容的副本,保存它是为了下次打开得更快。日志记录 App 做过什么。“邮件”会保留你打开过的每个附件的副本。Xcode 会保留你构建过的每个项目的构建产物。这些都不是你的工作成果,而且大部分在需要时会自动重新生成。
那么在 Mac 上删除缓存安全吗?通常是安全的:缓存被清除的 App 会重建它,你最多注意到的是 App 第一次稍微慢一点。不安全的是凭猜测操作。旧下载可能是某个文件的唯一副本,iOS 备份可能是手机的唯一备份,Xcode 归档则保存着你阅读崩溃报告所需的符号。这就是 Junk Cleaner 对这些类别与缓存区别对待的原因。
为什么 Mac 上的“系统数据”这么大
当“系统设置”在存储空间下显示一大块灰色的“系统数据”条时,其中很大一部分正是这类文件:资源库文件夹里的缓存和日志、App 数据、开发者文件,以及本地“时间机器”快照。macOS 不会为你逐项列出它们。Junk Cleaner 会列出,逐个文件夹,并在旁边标出大小。至于占满磁盘的其他内容,Disk Map 会显示空间都去了哪里。
Junk Cleaner 能找到什么
每个类别都会列出其大小和所在位置。扫描完成时,安全的类别会被勾选。其他类别标记为 Risky,在你选择之前保持未勾选。没有内容的类别会被隐藏。
| 默认勾选 | 内容 |
|---|---|
| User Caches | ~/Library/Caches 中的所有内容,包括浏览器缓存。 |
| Logs | ~/Library/Logs。 |
| Mail Attachments Cache | 你打开附件时“邮件”所保存的附件。 |
| Installers of Installed Apps | “下载”和桌面上的磁盘映像和安装包,其对应的 App 之后已经安装。 |
| Xcode DerivedData | 构建产物。Xcode 会在下次构建时重新生成。 |
| Xcode Simulator Caches | ~/Library/Developer/CoreSimulator/Caches。 |
| Developer Caches | npm、Gradle、Cargo、Go 和 Dart 的软件包缓存。 |
| iPhone and iPad Firmware | 已下载的 .ipsw 文件。Apple 会提供它仍在签名的每一个版本。 |
| Old JetBrains IDE Versions | 你已更新过的 IDE 版本的设置和插件,且 90 天未使用。最新版本始终保留。 |
| 有风险,默认不勾选 | 内容 |
|---|---|
| Old Downloads | “下载”中超过 90 天的文件。 |
| Messages Attachments | 在“信息”中发送和接收的照片、视频和文件。除非“iCloud 信息”保留了副本,否则聊天记录中会显示为缺失。 |
| Installers to Check | 看起来像已安装 App 的磁盘映像和安装包。请先逐个检查。 |
| iOS Backups | ~/Library/Application Support/MobileSync/Backup 中的 iPhone 和 iPad 备份。 |
| Xcode Archives | 超过 30 天的归档。 |
| Xcode Device Support | iOS 和 watchOS 的设备支持文件。 |
| Tool Caches | ~/.cache:uv、pre-commit、Hugging Face 模型及其他命令行工具。 |
| Unused node_modules | 90 天未动过的项目的依赖。npm install 可以把它们恢复。 |
| Unused Python Environments | 90 天未动过的虚拟环境和 conda 环境。可根据你的 requirements 或环境文件重新创建。 |
| Unused Rust Build Folders | 90 天未动过的 Cargo 项目的 target 文件夹。cargo build 可以把它们恢复。 |
| Unavailable Simulators、Unused Simulator Runtimes、Old Homebrew Versions、Docker | 由各自的工具清理。见下文。 |
| Trash | 废纸篓中已有的内容。 |
| Time Machine Snapshots | 启动磁盘上的本地快照。 |
旧安装包,与你已有的 App 相匹配
App 安装完成后,下载的 .dmg 或 .pkg 就没用了,却常常在“下载”里躺上好几年。Tidy My Mac 会查看直接位于“下载”和桌面上的磁盘映像、安装包和归档,并按名称、macOS 安装回执以及下载来源网站,把它们与“应用程序”文件夹中的 App 相匹配。App 在下载之后才安装的安装包会被勾选。匹配度较弱的会放入 Installers to Check,并且每一项都会说明匹配的原因。磁盘映像绝不会被挂载来查看内部,子文件夹中的文件也不会被动。
开发者垃圾:删除 Xcode DerivedData、模拟器、Homebrew 和 Docker
在开发者的 Mac 上,最大的垃圾往往是构建产物。删除 Xcode DerivedData 是安全的,也是 Xcode 出问题时通常的第一步修复;它会在下次构建时重新生成。旧的模拟器缓存、包管理器缓存,以及你数月未打开的项目的 node_modules 文件夹、Python 虚拟环境和 Rust target 文件夹,加起来也很快就会可观。只有当项目中除了被提供清理的那个文件夹之外,没有任何内容在 90 天内发生变化时,才算该项目未被动过。conda 环境不属于任何项目,所以当 90 天内没有向其中安装过任何东西时,才算未使用;base 环境永远不会被提供清理。JetBrains IDE 和 Android Studio 会为你每次更新所离开的每个版本保留一个设置和插件文件夹;90 天未使用的会被勾选,而每个 IDE 的最新版本绝不会被动。
有四个类别不是通过移动文件来清理,而是由拥有它们的工具来清理:不可用的模拟器和未使用的模拟器运行时用 simctl,旧的 Homebrew 版本用 brew cleanup,Docker 用 docker system prune。Docker 卷始终保留,因为其中存放着你的容器在多次运行之间保存的数据。模拟器运行时在 90 天后算作未使用,每个平台的最新运行时始终保留。这些类别只有在对应工具已安装且有东西可清理时才会出现。
查看每个文件,再做决定
点击任意类别,即可查看其中的每个文件,包括大小、日期和路径,并只把你挑选的那些移到废纸篓。清理之前,确认窗口会告诉你有多少内容将进入废纸篓(你仍可从那里还原),并指出哪些不会进入:
有两个类别是永久性的。清理 Trash 会将其清空。删除 Time Machine Snapshots 会请求一次管理员密码,并从每个已挂载的磁盘(包括外置驱动器)上移除每个快照日期;这无法撤销。这两者在你选择之前都保持未勾选。
其他所有进入废纸篓的内容都会记录在 Dashboard 的清理历史中,你可以在那里 Put Back 这些项目。请注意,macOS 只有在你清倒废纸篓时,才会释放已移入废纸篓的文件所占的空间。
一次扫描,四个板块
按下 Scan 会对你的磁盘进行一次扫描,同时填充 Junk Cleaner、Large Files、Disk Map 和 Duplicates。它在你的 Mac 上运行,有关你文件的任何信息都不会被发送到任何地方;详情见隐私政策。
完全磁盘访问权限
Old Downloads 和各个安装包类别需要读取“下载”和桌面,而 macOS 会保护这两个位置。在你授予“完全磁盘访问权限”之前,Junk Cleaner 会跳过这些文件夹,而不是为每一个都触发一次 macOS 提示,并显示一个横幅,带你前往相应设置。
关于Junk Cleaner的常见问题
对于资源库文件夹中的缓存,是安全的:App 会在需要时重建它们,第一次可能稍微慢一点。这就是 User Caches 默认勾选,而可能包含你自己文件的类别(如 Old Downloads 和 iOS Backups)则不勾选的原因。
移到废纸篓的文件可以:在 Dashboard 的清理历史中使用 Put Back,或者在清倒废纸篓之前直接从废纸篓中取回。清倒废纸篓、删除 Time Machine 快照,以及 Docker、Homebrew 和 simctl 所清理的内容都无法撤销,确认窗口会事先说明。
安全。DerivedData 是构建产物和索引,Xcode 会在下次构建时重新创建。之后的第一次构建会花更长时间。Xcode Archives 和 Device Support 则不同,这就是它们被标记为 Risky 的原因。
它会释放磁盘空间,这在磁盘快满时最有意义。它本身并不会让 App 运行得更快。要查看究竟是什么拖慢了你的 Mac,请使用 Performance。
