不喜欢唠叨的,直接进入技术总结

建议还是看一下全文,避免误操作。

TimeMachine (后文简称 TM)是 Apple 自家一款很强大的系统级别的备份软件,个人非常喜欢,虽然不是实时备份,但是当你用得时间长了,真的会有一种坐时光机的感觉。当然不是每个人都喜欢这种全面备份,所以也就不过多吹嘘,毕竟没有一件东西是完美的。

TM 备份方式比较灵活,可以选择外接硬盘备份,也可以使用网络驱动器备份。过去,我使用的一直是外接硬盘的方式,原因是简单。硬盘、键盘等都插在显示器的 USB hub 上,每天上班只要接上,便会自动备份。以这种方式使用快两年,直到最近,硬盘出现只读问题,不得不考虑迁移数据。

备份数据大小在 750GB 左右,考虑到小文件较多的原因,迁移时间不会太短,这不是什么大问题。问题是我没有多余的移动硬盘(也没有多余的 type c 转接头,公司有,但迁移数据肯定不能占用上班时间),于是想着在黑群晖上开辟 1T 空间来做这件事。好了,终于引出了本文重点记录的问题:如何将 TimeMachine 备份数据从移动硬盘迁移到网络驱动器

我本以为这个问题是很简单的,不就是复制文件。然而,我不了解的是,TM 本地备份和网络备份的方式略有差异

TM 本地备份和网络备份有什么不同?

使用过 TM 备份的同学,应该能发现,移动硬盘备份后的硬盘数据大概是这个样子: 屏幕快照 2019-07-20 12.11.15 目录结构是 /Backups.backupdb/主机名/日期,因此我就想直接复制文件到网络驱动盘不就行了。如果你也这样做,可得到这样一个提示。 屏幕快照 2019-07-20 12.32.18 格式不对?自然能想到是文件系统格式不对,然而网络驱动器如何能解决文件系统格式的问题呢?想不通。

这个时候其实搜索了一些资料,但是没啥有价值的信息(搜索 TimeMachine 这些关键词的确范围有限)。于是就测试了一下使用网络驱动器备份,想了解这种情况是如何存储的,如下: 屏幕快照 2019-07-20 12.40.45 原来是使用镜像文件存储的,双击挂载这个镜像,会发现目录结构和之前外接硬盘一致。

总结:外接硬盘备份时,数据以目录形式存放;网络驱动器备份,使用了一层镜像文件封装,来保证文件系统格式一致

大小写带来的问题

根据之前的研究,迁移资料的方法就是先挂载虚拟镜像文件,然后将 Backups.backupdb 复制进去。如果你也这么操作了,你可能会得到这条提示:

该宗卷发生大小写错误,无法用于备份

这是因为 sparsebundle 镜像内的文件系统默认是区分大小写的,也就是下图红框圈出的,而原有备份是不区分大小写的文件系统格式,两者不兼容,导致无法直接复制。

屏幕快照 2019-07-20 12.55.19

解决办法:重新格式化 sparsebundle 的文件系统格式。

这会导致数据丢失,我这里本来就没有数据,就无所谓了。若你的网络驱动器中已有备份数据,想合并数据,目前似乎是无解的。有方法的同学可以交流。

技术总结

将 TimeMachine 备份从移动硬盘迁移到网络驱动器的步骤:

  1. 配置 TimeMachine 备份目标为你的网络驱动器,并等待开始备份。
  2. 当网络驱动器中生成了 sparsebundle 文件时,取消备份。(中间过程 sparsebundle 文件会经历一次重命名,文件名第一次为 mac 的硬件UUID,第二次为 mac 主机名时,等到文件名为主机名再取消备份。)
  3. 用 Finder 双击挂载这个新的 sparsebundle 文件
  4. 此时在 Finder 和磁盘工具都能看到一个「时间机器备份」的磁盘。
  5. 若遇到大小写问题,进入磁盘工具。抹掉该磁盘为不区分大小写的文件系统格式。 屏幕快照 2019-07-20 13.19.44
  6. 设置权限,取消勾选「忽略此卷宗上的所有权」 屏幕快照 2019-07-20 23.43.20

  7. 复制 Backups.backupdb 目录到「时间机器备份」根目录。

题外

使用 Finder 复制准备时间较长,可能长达七八个小时。建议使用一款叫做 SuperDuper 的软件,我用它了也大概花了二十七八个小时才完成复制,所以一定要合理安排时间,同时注意不要让电脑进入休眠。

参考资料

How can I copy my TM backups to a different location