我有一个 6T 的阵列用来备份 TimeMachine 和自己平时拍的照片,这两天导照片的时候,发现阵列满了。用 DaisyDisk 一看,TimeMachine 大概占了 700G 的隐藏空间。
为了保证能顺利导入照片,我决定冒险先将 TimeMachine 关闭,等今后硬盘扩容后再考虑开启备份。
其实,我的大部分重要文件都保存在阵列上,所以即便系统崩溃,问题也不是特别严重。
关于时间机器(TimeMachine),德哥曾经写过一篇文章《和时间机器的斗争,找回被封存的空间》,本文在原有基础上进行了精简和拓展。
关闭自动备份
如果你要停掉 TimeMachine 或删除某个快照,则可以将自动备份先关闭。
命令行模式
关闭自动备份
tmutil disable
停止当前备份进程
<pre spellcheck="false" class="" lang="sh" cid="n9" mdtype="fences" style="margin: 0px 0.15em; padding: 0.5em; max-width: 100%; box-sizing: border-box; overflow-wrap: break-word !important; overflow: visible; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 12px; line-height: 1.3em; break-inside: avoid; text-align: left; white-space: normal; background-color: rgb(249, 249, 249); width: inherit; border-radius: 3px; border-width: 1px; border-style: solid; border-color: rgb(204, 204, 204); color: rgb(119, 119, 119);">tmutil stopbackup</pre>
平时还是建议开启自动备份。
tmutil enable
图形化模式
打开时间机器的偏好设置,将自动备份取消。效果同命令行。
删除指定快照
命令行形式
macOS 也可以通过命令行删除指定的 TimeMachine 快照。
我们先找到快照备份地址,命令如下:
显示最近的快照
tmutil latestbackup
显示所有已完成的快照
tmutil listbackups
检查是否存在任何第三方快照
tmutil listlocalsnapshots /
显示示例如下:
<pre style="margin: 0.6em 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; background-color: rgb(255, 255, 255); font-family: Consolas, Inconsolata, Courier, monospace; font-size: 12px; line-height: 1.3em;">
Snapshot dates for all disks:2019-10-13-1711202019-10-13-2143242019-10-13-225244……
</pre>
输入删除命令,就可以删除指定的快照而不影响其他快照:
tmutil deletelocalsnapshots 2019-10-13-171120
图形化模式
打开 Finder,进入到你的备份目录,点击顶部菜单右上角的 TimeMachine 图标,选择进入时间机器
,或者打开应用程序中的「时间机器」,就可以进入时间机器模式。
选择右侧边栏的备份时间,找到备份目录,找到需要删除的备份快照,点击操作
,执行删除所有备份
。
手动批量删除 TimeMachine 备份
当我们已关闭了自动备份,想删除所有备份腾出空间时,我们可以采用手动批量方式进行强制删除。
显示当前系统的备份目录
tmutil machinedirectory
删除 Backups.backupdb 目录下所有备份
➜ sudo tmutil delete /Volumes/LaCie/Backups.backupdb
上述命令执行后提示如下:
……
Deleting: /Volumes/LaCie/Backups.backupdb/AdeMini/2019-10-12-233916
Deleted (1.0G): /Volumes/LaCie/Backups.backupdb/AdeMini/2019-10-12-233916
Total deleted: 1.3G
暴力删除 Backups.backupdb 备份
对于一些用tmutil deletelocalsnapshots
和tmutil delete
删除失败的快照或备份文件,你也可以用如下命令进行暴力删除。在用rm
进行暴力删除时,可能存在命令执行成功,空间却未释放的 bug。
<pre style="margin: 0.6em 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; background-color: rgb(255, 255, 255); font-family: Consolas, Inconsolata, Courier, monospace; font-size: 12px; line-height: 1.3em;">
sudo /System/Library/Extensions/TMSafetyNet.kext/Contents/Helpers/bypass rm -rfv Backups.backupdb
</pre>
找回顽固的隐藏空间
您在执行删除命令时发生断电,或备份/删除 APFS 磁盘上的文件发生异常,可能存在数据块遗失、空间未正常释放等情况。
当你的系统存在大量的隐藏磁盘空间,你却通过du
等命令无法找到时,很有可能就表示你的文件系统存在错误。
您可能需要使用较低级别的 fsck_apfs
命令来验证和修复卷。
命令行模式
先找到备份盘的文件系统名称:
df -h
再执行修复:
fsck_hfs -fy -x /dev/rdisk0s2
图形化模式
你也可以通过磁盘工具
来进行修复,效果和命令行等同。
会提示如下信息,当显示操作成功时,即表示完成修复:
正在“LaCie”(disk0s2)上运行“急救”
正在修复文件系统。
宗卷已卸载。
正在执行 fsck_hfs -fy -x /dev/rdisk0s2
……
已成功修复宗卷“LaCie”。
文件系统检查退出代码为 0。
正在恢复发现为已卸载的原始状态。操作成功。
终于,700G 的空间重新回来了。
另附:其他常用 tmutil 命令
打开/关闭本地快照
tmutil enablelocaltmutil disablelocal
分析快照目录
sudo tmutil calculatedrift /Volumes/LaCie/Backups.backupdb/AdeMini
显示/指定/删除备份目标
tmutil destinationinfo [-X]sudo tmutil setdestination /Volumes/LaCie/Backups.backupdb/AdeMinisudo tmutil removedestination destination_id
简单显示用法
tmutil help