苹果Mac系统工具Time Machine(时间机器)在NAS或远程备份教程

    大家好,奇点今天分享一个关于Mac的我个人觉得有用的小技巧。

    用过Mac的朋友应该都知道Time Machine(时间机器)。这个苹果官方推出的系统备份工具。你可以把你的Mac系统盘上的数据完整地备份到本地硬盘、移动硬盘或者远程服务器上,并在必要时进行还原。因为是系统原生软件,Time Machine在兼容性安全性上都做得不错。文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    苹果Mac系统工具Time Machine(时间机器)在NAS或远程备份教程文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    不过用过Time Machine的朋友,大概率都不会选择本地备份。毕竟这相当于在本地磁盘做一个Raid,要花至少2倍的磁盘空间,并不合算。而且绝大多数需要数据还原的时候都是本地磁盘的软硬件出问题,备份放在本地,并不保险。因此很多人都会选择在必要时外接一个移动硬盘,或者在家庭环境中把备份放到比如NAS上。我就是把Time Machine备份设置到了家里的群晖中并让Time Machine自动运行。文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    其实起因是这样的:最近因为NAS上“有价值的影音文件”数量过多,NAS的空间不够了,于是上去把各个文件夹捋了一遍,才发现Macbook在NAS上的备份,有将近1T。而我MacBook本地的数据量,也才200多G。文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    于是问题来了,放在NAS或者远程服务器上的Time Machine备份,应该怎么管理?文章源自技术奇点-https://www.xerer.com/archives/37378.html

    ▍备份逻辑文章源自技术奇点-https://www.xerer.com/archives/37378.html

    首先我们要简单了解一下Time Machine的备份逻辑。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    官方说明:文章源自技术奇点-https://www.xerer.com/archives/37378.html

    苹果Mac系统工具Time Machine(时间机器)在NAS或远程备份教程文章源自技术奇点-https://www.xerer.com/archives/37378.html

    备份频率和持续时间文章源自技术奇点-https://www.xerer.com/archives/37378.html

    “时间机器”会创建过去24小时的每小时备份,过去一个月的每日备份,以及过去所有月份的每周备份。如果备份磁盘已满则最早的备份会被删除。
    从macOS Ventura开始,你可以更改备份频率:打开“时间机器”设置,点按“选项”,然后从“备份频率”菜单中选取一项设置。
    首次备份可能需要很长时间,但你可以在备份期间继续使用Mac“时间机器”只会备份自上次备份以来有变动的文件,因此将来的备份速度会加快。
    如果“时间机器”备份所用的时间比你预期的要长,文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    最新系统里备份的频率也可以手动调节文章源自技术奇点-https://www.xerer.com/archives/37378.html

    苹果Mac系统工具Time Machine(时间机器)在NAS或远程备份教程文章源自技术奇点-https://www.xerer.com/archives/37378.html

    如果我们把Time Machine的备份放在NAS段并选择每小时自动备份,那系统就会每小时去连接NAS并在必要的时候进行Snapshot(快照),一来一去,备份的数量也就越来越多。平时只顾备份,却没有想着清理,自然会占用大量空间。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    ▍备份清理文章源自技术奇点-https://www.xerer.com/archives/37378.html

    Apple为Time Machine设置了一个App,在应用程序里找到Timemachine.app ,打开,就能进入到Time Machine备份的图形界面。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    苹果Mac系统工具Time Machine(时间机器)在NAS或远程备份教程文章源自技术奇点-https://www.xerer.com/archives/37378.html

    你可以选择到某个时间段的备份,删除或还原数据。很直观。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    但如果你的备份是放在NAS上,因为网络原因,数据显示会有一定的滞后,反应会比较慢,操作并不方便。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    那怎么办?当然是用命令行了!文章源自技术奇点-https://www.xerer.com/archives/37378.html

    Apple为Time Machine备份管理提供了一个叫 tmutil 的命令行工具,对应翻译应该就是 Time Machine Util(时间机器实用程序)。能实现的功能可以通过 tmutil --help 进行查看,输出如下:文章源自技术奇点-https://www.xerer.com/archives/37378.html

    ➜  ~ tmutil --help
    Usage: tmutil version
    Usage: tmutil enable
    Usage: tmutil disable
    Usage: tmutil startbackup [-a | --auto] [-b | --block] [-r | --rotation] [-d | --destination dest_id]
    Usage: tmutil stopbackup
    Usage: tmutil delete [-d backup_mount_point -t timestamp] [-p path]
    Usage: tmutil deleteinprogress machine_directory
    Usage: tmutil restore [-v] src ... dst
    Usage: tmutil compare [-@acdefghlmnstuEX] [-D depth] [-I name]
           tmutil compare [-@acdefghlmnstuEX] [-D depth] [-I name] snapshot_path
           tmutil compare [-@acdefghlmnstuEUX] [-D depth] [-I name] path1 path2
    Usage: tmutil setdestination [-a]  mount_point
           tmutil setdestination [-ap] afp://user[:pass]@host/share
    Usage: tmutil removedestination destination_id
    Usage: tmutil destinationinfo [-X]
    Usage: tmutil addexclusion [-p|-v] item ...
    Usage: tmutil removeexclusion [-p|-v] item ...
    Usage: tmutil isexcluded item ...
    Usage: tmutil inheritbackup machine_directory
           tmutil inheritbackup sparse_bundle
    Usage: tmutil associatedisk [-a] mount_point volume_backup_directory
    Usage: tmutil latestbackup [-m] [-t] [-d mount_point]
    Usage: tmutil listbackups [-m] [-t] [-d mount_point]
    Usage: tmutil machinedirectory
    Usage: tmutil calculatedrift machine_directory
    Usage: tmutil uniquesize path ...
    Usage: tmutil verifychecksums path ...
    Usage: tmutil localsnapshot
    Usage: tmutil listlocalsnapshots <mount_point>
    Usage: tmutil listlocalsnapshotdates [<mount_point>]
    Usage: tmutil deletelocalsnapshots [<mount_point> | <snapshot_date>]
    Usage: tmutil thinlocalsnapshots <mount_point> [purgeamount] [urgency]

    这里列出几个我们需要用到的命令:文章源自技术奇点-https://www.xerer.com/archives/37378.html

    • tmutil machinedirectory: 获取本机的Timemachine的目标位置
    • tmutil listbackups: 列出当前使用的Timemachine存储备份
    • tmutil delete: 删除指定的Timemachine备份
    一步步来:
    1. 获取本机的Time Machine的目标位置
    ➜  ~ tmutil machinedirectory
    Password:
    /Volumes/Backups of MY-MBP

    这里的  “MY-MBP” 就是主机名文章源自技术奇点-https://www.xerer.com/archives/37378.html

    2. 列出当前使用的Time Machine存储备份列表文章源自技术奇点-https://www.xerer.com/archives/37378.html

    ➜  ~ tmutil listbackups -t
    2023-03-15-085701
    2023-03-16-093627
    ...
    2023-04-15-200347
    2023-04-16-075734

    这里用了 -t,只会输出具体的时间戳。如果只是 tmutil listbackups 或者加了 -m,则会输出具体的存储路径,比如:文章源自技术奇点-https://www.xerer.com/archives/37378.html

    /Volumes/.timemachine/D533333-96EF-4403-BBBB-32222222222222/2023-04-14-203808.backup/2023-04-14-203808.backup文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    有个小技巧,通过上面两个命令,我们其实已经知道了Time Machine备份的存储位置和包含的备份信息,但如果你登录到NAS上,看到的只是一个 .sparsebundle文件,并不是完全按照目录形式进行存储,无法正常地预览到其中的内容。文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    但我们依旧可以通过Finder来看。Finder -> Go -> Go to folder,输入#1 里我们得到的目录名 “/Volumes/Backups\ of\ MY-MBP”, 这时候就可以通过窗口预览各个备份了。文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    苹果Mac系统工具Time Machine(时间机器)在NAS或远程备份教程文章源自技术奇点-https://www.xerer.com/archives/37378.html

    我个人理解应该是个设计问题,在终端下文件系统并不能让你看到备份的历史结构,因为 Time Machine 一开始就不是纯粹按照目录存储进行设计的。Apple 提供了Time Machine 管理工具,但却没有提供一个轻松进入这个界面的入口,也不知道是设计缺陷还是产品经理故意为之。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    3. 备份删除文章源自技术奇点-https://www.xerer.com/archives/37378.html

    在#2 里我们说到可以在Finder中找到Time Machine 备份的路径,那在上图的界面中,右键一个时间备份,就可以直接删除备份。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    或者,继续用命令行。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    ➜  ~ sudo tmutil delete -d /Volumes/Backups\ of\ MY-MBP  -t 2023-03-12-153254
    1 backups deleted

    这里的命令是:tmutil delete -d [location] - t [timestamp],也是比较直观的。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    这样我们就可以手动地进行备份快照的删除和管理了。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    ▍自动化文章源自技术奇点-https://www.xerer.com/archives/37378.html

    既然都用了命令了,为什么不搞个自动化?比如自动删除30天前所有的Time Machine 备份?文章源自技术奇点-https://www.xerer.com/archives/37378.html

    于是我问了ChatGPT文章源自技术奇点-https://www.xerer.com/archives/37378.html

    苹果Mac系统工具Time Machine(时间机器)在NAS或远程备份教程文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    写一个.sh 脚本列出在一个月之前的所有的
    timemachine backups备份,并用tmutil delete -d删除所有备份文章源自技术奇点-https://www.xerer.com/archives/37378.html

    以下是一个列出一个月之前的所有TimeMachine备份并删除它们的脚本:文章源自技术奇点-https://www.xerer.com/archives/37378.html

    #!/bin/bash
    #计算一个月前的日期
    onemonth_ago=$(date-v-1m+Y-m-d文章源自技术奇点-https://www.xerer.com/archives/37378.html

    #查找一个月前的所有备份并将其删除
    sudo tmutil listbackups i while read backup
    backup_date=$(echo "$backup" sed -E if [[ "$backup date" < "$one month ago
    echo "Deleting backup: $backup' sudo tmutil delete "$backup' fi
    done文章源自技术奇点-https://www.xerer.com/archives/37378.html

    使用方法:
    1.打开终端应用程序。
    2创建一个新的文本文件,将上述脚本复制并粘贴到文件中。
    3.将文件保存为sh扩展名的脚本文件,例如
    delete old backups.sh
    4.在终端中导航到脚本文件所在的目录。
    5.运行 chmod +x delete old backups.sh命
    令将脚本文件设置为可执行。
    6.运行./delete old backups.sh命令以运行脚本。
    脚本将使用date命令计算出一个月前的日期。然后,脚本将使用 sudo tmutil listbackups命令列出所有Time Machine备份,并使用while循环遍历它们。对于每个备份,脚本将提取备份的日期,并将其与一个月前的日期进行比较。如果备份的日期早于一个月前的日期,脚本将使用sudo tmutil delete 命令删除备份。最后,脚本将打印出已删除的备份。文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    ChatGPT给的代码大体上逻辑没问题,但具体的tmutil命令行错了(Apple在Big Sur做了一次代码升级,看来ChatGPT的数据库还是没更新到最新)。简单修改了一下,就能用了。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    #!/bin/bash
    # 计算一个月前的日期one_month_ago=$(date -v-30d +%Y-%m-%d)
    # 查找一个月前的所有备份并将其删除sudo tmutil listbackups -t | while read backup; do    backup_date=$(echo "$backup" | sed -E 's/.*\/(.{4})-(.{2})-(.{2})-\d{6}/\1-\2-\3/')if [[ "$backup_date" < "$one_month_ago" ]]; thenecho "Deleting backup: $backup"        sudo tmutil delete -d /Volumes/Backups\ of\ MY-MBP  -t "$backup"fidone

    把.sh 文件通过快捷指令定时自动运行,自动化就基本完成了。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    ▍总结文章源自技术奇点-https://www.xerer.com/archives/37378.html

    虽然苹果提供了关于Time Machine的很多功能设置,但是对于普通用户,如果把Time Machine设置在远端NAS上,对于备份的管理和清理并不是很直观。通过简单的命令和脚本,可以实现对备份快照的精准清理和进一步管理。文章源自技术奇点-https://www.xerer.com/archives/37378.html

    希望对大家有用。文章源自技术奇点-https://www.xerer.com/archives/37378.html

     文章源自技术奇点-https://www.xerer.com/archives/37378.html

    赵弈钦和前女友汤梦欣10分钟电话录音在哪里下载?文章源自技术奇点-https://www.xerer.com/archives/37378.html

    手机铃声响后提示忙音:对不起,您拨打的电话正在通话中?8个原因文章源自技术奇点-https://www.xerer.com/archives/37378.html

    文章源自技术奇点-https://www.xerer.com/archives/37378.html
    weinxin
    微信公众号
    扫码关注公众号获取资源下载及吃瓜爆料

    发表评论

    匿名网友