我有一个用 Time Machine 从运行 OS X Snow Leopard 的 Mac 创建的稀疏包镜像,其中包含同一台 Mac 的备份,但包含许多不同的快照。我想提取存档中的所有文件,而不是从多个快照中复制同一个文件,这样就不会得到一百倍大小的数据。以下是我目前尝试过的方法。
我发现 sparsebundle 只能安装在运行 Snow Leopard 的 Mac 上,幸运的是,我正好有一台。然后,我尝试在终端中使用以下命令将文件提取到另一个磁盘:
ditto "/Volumes/Time Machine Backups/Backups.backupdb/" "/Volumes/newdisk/"
它只是不断复制文件,直到新磁盘写满。稀疏包的原始大小约为 425 GB,我尝试将其复制到 2 TB 的 SSD 上。之后我查阅了一些资料,发现 Time Machine 使用硬链接来链接到不同的文件和文件夹,而不会增加稀疏包的大小。之后我发现或许可以使用 rsync,我必须在 Snow Leopard 上从源代码构建 rsync 才能获得 3.2.3 版本,该版本应该能够保留文件和文件夹的硬链接。然后我尝试了以下命令:
rsync -aHAXE --numeric-ids "/Volumes/Time Machine Backups/Backups.backupdb/" "/Volumes/newdisk/"
它做了同样的事情,填满了 2 TB 的 SSD。输出看起来有点不同,我知道至少一些硬链接似乎被保留了下来,因为在我的 Windows 电脑上检查时,有很多 0B 大小的文件,我使用 Paragon HFS+ 驱动程序来读取文件系统。但这显然还不够。
我尝试复制所有快照,但每个文件仍然只有一个副本。稀疏包包含 2012 年至 2014 年的备份,其中肯定有一些更早的快照文件在 2013 年或 2014 年晚些时候被删除了。稀疏包的大小超过了 400 GB,尽管备份来自一台只有 250 GB 硬盘的 Mac。
我该怎么做才能从档案中取出所有文件,并且不产生大量重复文件?
因此,您只需要备份中所有曾经存在过的文件的最新副本。结果不一定完全合理(例如,如果文件被移动或目录被重命名),但我们可以避免完全相同文件的重复副本。
您需要:
--ignore-existing
完全防止后续运行的 rsync 覆盖早期运行的文件我手边没有 Snow Leopard 机器,所以无法测试,但是
注意:我跳过了这一点,
-H
因为硬链接通常位于快照之间 - 如果您在快照文件系统中确实有很多硬链接,那么您可能确实需要这样做。