和时间机器的再次斗争(释放 TimeMachine 占用的空间)

我有一个 6T 的阵列用来备份 TimeMachine 和自己平时拍的照片,这两天导照片的时候,发现阵列满了。用 DaisyDisk 一看,TimeMachine 大概占了 700G 的隐藏空间。

image

为了保证能顺利导入照片,我决定冒险先将 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

图形化模式

打开时间机器的偏好设置,将自动备份取消。效果同命令行。

image

删除指定快照

命令行形式

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 图标,选择进入时间机器,或者打开应用程序中的「时间机器」,就可以进入时间机器模式。

image

选择右侧边栏的备份时间,找到备份目录,找到需要删除的备份快照,点击操作,执行删除所有备份

image

手动批量删除 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 deletelocalsnapshotstmutil 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

图形化模式

你也可以通过磁盘工具来进行修复,效果和命令行等同。

image

会提示如下信息,当显示操作成功时,即表示完成修复:

正在“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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容