如何更好地清理 Time Machine 备份 您所在的位置:网站首页 macbook内存清理 如何更好地清理 Time Machine 备份

如何更好地清理 Time Machine 备份

2024-01-05 21:40| 来源: 网络整理| 查看: 265

Time Machine 是 macOS 自带的一个备份工具,能够自动备份系统中的文件,并保留各个文件的历史版本。

在备份磁盘空间不足时,Time Machine 能够自动清理旧备份。但是部分场景下,仍有手动清理备份的需求,例如:

一个硬盘被多台 Mac 使用,清理一台电脑的旧备份,为另一台电脑腾出备份空间释放硬盘空间,用于保存其他文件换用小容量硬盘,例如从 HDD 更换为 SSD删除备份中不重要的大文件(例如 Stram 游戏库、虚拟机、iOS 模拟器等),为个人文档等重要文件留出更多备份空间,从而保留重要文件的更多历史版本

在我的 NAS 上,由于之前没有设置空间配额,Time Machine 备份占用了大量空间,影响其他文件的存放。于是,我开始了解如何进行 Time Machine 的清理。

tmutil 命令行工具

macOS 自带 tmutil 工具,能够实现查看备份、创建备份、删除备份、比较备份等功能。

其中,tmutil listbackups 命令可以显示 Time Machine 中的所有备份:

$ tmutil listbackups /Volumes/时间机器备份/Backups.backupdb/blanboom-studio/2019-12-21-200941 /Volumes/时间机器备份/Backups.backupdb/blanboom-studio/2020-01-05-221538 /Volumes/时间机器备份/Backups.backupdb/blanboom-studio/2020-01-19-203155

tmutil delete 命令则可以删除 Time Machine 中的指定备份:

$ sudo tmutil delete /Volumes/时间机器备份/Backups.backupdb/blanboom-studio/2019-02-01-211852 Deleting: /Volumes/时间机器备份/Backups.backupdb/blanboom-studio/2019-02-01-211852 Deleted (427.2M): /Volumes/时间机器备份/Backups.backupdb/blanboom-studio/2019-02-01-211852

有了这两条命令,我们可以方便地在 shell 脚本中使用,进行批量删除备份的操作。

使用脚本批量删除旧备份

在上网搜索的过程中,我发现已经有人完成了批量删除 Time Machine 备份的脚本,下载该脚本,修改文件中的相关参数,即可实现对 Time Machine 的批量清理:

linjer/tmcleanup.md: Script to automatically remote old Mac OSX Time Machine Backups older than a specified number of days

我对这个脚本进行了简单的修改,方便在使用时直接指定参数。脚本可在如下两个链接中下载:

blanboom/tmcleanup.mdScripts/Bash at master · blanboom/Scripts

使用时,只需要运行 tmcleanup.sh,后面依次跟上 Time Machine 磁盘挂载路径、计算机名称、要保留的备份的天数即可。例如下面的命令,能够实现清理 /Volumes/时间机器备份/Backups.backupdb 路径下,计算机 blanboom-studio 上 30 天前的所有备份:

$ sudo ./tmcleanup.sh /Volumes/时间机器备份/Backups.backupdb blanboom-studio 30 使用脚本删除 50% 的旧备份

Time Machine 的一大特色功能,是智能保留备份的历史版本。对于近期的备份,保留尽可能多的版本,而对于早期备份,只保留每月版本:

Time Machine 的备份版本保留策略

但是,Time Machine 只能做到保留旧备份的每周备份。如果想要实现保留一年前的每两周备份、或者保留一年前的每月备份,Time Machine 就无能为力了。

上文的脚本经过简单的修改,就可以在删除旧备份时,每两条备份中只删除一条,而不是全部删除。这样就实现了保留 50% 的旧备份。

当然,也可以根据自己的需求修改脚本或组合使用,实现保留 25%,或者保留 75% 的旧备份。

修改后的脚本也已经上传到我的 GitHub 仓库,使用上文链接中的 tmcleanup_50percent.sh,即可实现清除 50% 的旧备份:

# 删除三个月前 50% 的备份(保留三个月前每两周备份) $ sudo ./tmcleanup.sh /Volumes/时间机器备份/Backups.backupdb blanboom-studio 90 # 连续两次运行脚本,实现删除一年前 75% 的备份(保留一年前的每月备份) $ sudo ./tmcleanup.sh /Volumes/时间机器备份/Backups.backupdb blanboom-studio 365 $ sudo ./tmcleanup.sh /Volumes/时间机器备份/Backups.backupdb blanboom-studio 365 使用 BackupLoupe 深入分析 Time Machine 空间占用情况

上述脚本能够做到方便地删除旧备份。但是,想要更加深入地分析 Time Machine 的空间占用情况,进行针对性的清理,就要用到 BackupLoupe 了:

BackupLoupe: One Stop Shop for Time Machine

BackupLoupe 可以实现如下两点功能:

分析哪些备份占用空间较大,从而做到删除占用空间大的备份分析备份中,哪些文件和目录占用空间大,从而做到删除备份中占用空间大的文件(例如 Steam 游戏库、大型 App、虚拟机、iOS 模拟器、视频文件等)

通过针对性地删除占用备份中不重要的大文件,可以腾出空间让 Time Machine 保存重要文件(例如个人文档、照片等)的更多历史版本,从而更充分地利用 Time Machine 存储空间。

BackupLoupe 的使用也很简单,打开 BackupLoupe,建立索引后,就可以看到每一个备份、以及备份中的每个目录的空间占用情况:

BackupLoupe 中,能够显示所有历史备份的占用空间

不过 BackupLoupe 本身只提供分析功能,并没有自带清理功能。关于如何清理备份中指定的文件或目录,可参考这篇文章:

Time Machine 使用教程(六):如何手动删除 Time Machine 备份 – 少数派

备注:

题图来源:https://unsplash.com/photos/hL8slYnc-bM本文同时发布在我的博客,欢迎关注:https://blanboom.org/2020/timemachine-cleanup/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有