最近,在我的 Mac 上,
- 更换了新硬盘(例如硬盘故障后)或者
- 将启动分区迁移到另一个分区
我该怎么做才能让 Time Machine 再次正确备份我的数据?它不再进行增量备份。
答案1
使用 tmutil
免责声明:我浏览了tmutil
手册页并执行了这些步骤。时间机器现在似乎正在顺利备份。我不知道所有这些步骤是否必要,或者我是否按照正确的顺序执行了它们。YMMV。
首先禁用 Time Machine
$ sudo tmutil setdestination /Volumes/TIME_MACHINE_VOLUME
$ sudo tmutil associatedisk -a /Volumes/MACINTOSH_HD/ /Volumes/TIME_MACHINE_VOLUME/Backups.backupdb/COMPUTER_NAME/Latest/MACINTOSH_HD/
这会告诉 Time Machine 将MACINTOSH_HD
新卷备份到/Volumes/TIME_MACHINE_VOLUME/Backups.backupdb/COMPUTER_NAME/Latest/MACINTOSH_HD/
旧卷的旧备份存储库。在我的情况下,新旧卷都具有相同的名称。
$ sudo tmutil inheritbackup /Volumes/TIME_MACHINE_VOLUME/Backups.backupdb/COMPUTER_NAME/
这会将旧的备份存储库连接到新的卷。
然后运行:
$ sudo tmutil listbackups
要列出备份,如果上述操作有效,您应该会看到旧卷的所有备份。
答案2
0. 注释
首先,禁用 Time Machine。然后,确保备份了重要内容,不要只依赖 Time Machine 磁盘。这里可能会造成破坏。
另请注意,只有当您想要再次进行增量备份时才应执行此操作。如果您不关心以前的备份,则可以跳过此操作,只需让 Time Machine 创建第二个备份即可。
1. 先决条件
无论如何:您需要该fsaclctl
命令来执行以下步骤。如果您使用的是 Snow Leopard,你可以从 Leopard 安装盘中获取它。在 Leopard 上,它已经包含在内(跳到下一部分)。
您还可以下载一个包这里或者这里。解压后,右键单击启用ACLs.app并选择“显示包内容”。导航至内容/资源并复制fsaclctl
到您的主文件夹 ( /Users/<your-username>
)。
2. 找出你的新 UUID
打开磁盘工具.app,然后选择信息在您的 Mac 磁盘上。在这里,将您的 UUID 复制到其他地方。您稍后会需要它。
3. 检查你的旧 UUID
然后,打开终端并转到 TM 磁盘上的最新备份:
cd /Volumes/<time-machine>/Backups.backupdb/<your-mac-name>/Latest
分别将time-machine>
和替换<your-mac-name>
为您的 Time Machine 卷的名称和 Mac 的名称。现在,让我们找出当前存储在磁盘上的 UUID:
sudo xattr -pl com.apple.backupd.SnapshotVolumeUUID "Macintosh HD"
将其替换为分区的实际名称(在我的屏幕截图中,它是“Macintosh HD”)。如您所见,在我的情况下,UUID 匹配。在您的情况下,它们不匹配。
如果他们确实这样做了,就此停止,问题可能出在其他地方!
4. 替换 Time Machine 卷上的 UUID
您现在需要使用fsaclctl
命令禁用驱动器上的 ACL 保护。
sudo fsaclctl -p /Volumes/<time-machine> -d
如果您已将其复制到主文件夹,请改用以下命令:
sudo /Users/<your-username>/fsaclctl -p /Volumes/<time-machine> -d
现在,这是关键的一行。您需要将旧的 UUID 覆盖为当前磁盘的 UUID(即通过磁盘工具找到的 UUID)。用XXX…
您在开始时复制的 UUID 替换。
sudo xattr -w com.apple.backupd.SnapshotVolumeUUID XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX "Macintosh HD"
因此这可能看起来像:
sudo xattr -w com.apple.backupd.SnapshotVolumeUUID 650DDECD-CC5E-3552-9960-2D50014A4BDB "Macintosh HD"
完成后,重新启用 ACL:
sudo fsaclctl -p /Volumes/<time-machine> -e
与以前一样,如果您刚刚将其复制到主文件夹,请执行以下操作:
sudo /Users/<your-username>/fsaclctl -p /Volumes/<time-machine> -e
别忘了重新启用 Time Machine,看看它现在是否能正常工作。请注意,下一次备份可能需要一段时间,甚至几个小时。
我曾经做过类似的程序,这是在我的 Mac 更换逻辑板后必须做的。
这是从以下来源收集的:
- Macworld – 10.5:驱动器交换后重新连接 Time Machine 备份
- Heimlicher.com – 时间机器:磁盘的 UUID 已更改,它还提供了一个 shell 脚本来为您完成整个操作。
答案3
关于 10.7+:
请注意,slhck 的详细回答不适用于 10.7 及以上版本。对于 10.7+ 版本,请参阅tmutil
手册页、章节inheritbackup
和associatedisk
。
答案4
就我而言,上述答案很有帮助,但我对其进行了一些修改。
在阅读本文之前,我试图使用继承备份命令,但虽然它没有以错误完成,时间机器仍然没有看到我的磁盘和我的稀疏束作为备份。
首先需要的是设置目的地命令。现在我写这篇文章的时候我的 Time Machine 备份正在更新!
所以最后我首先做了:
sudo tmutil associatedisk -a /Volumes/Macintosh\ HD /Volumes/Time\ Capsule/Backups.backupdb/<mymacname>/Latest/Macintosh\ HD/
进而:
sudo tmutil inheritbackup /Volumes/Time\ Capsule/<mymacname>.sparsebundle