Time machine 使用增量备份,因此要恢复备份,需要所有备份。Time machine 还具有在没有可用空间时删除最旧备份的功能。
但这不会破坏备份吗?历史记录中缺少备份。Time machine 如何处理这种情况?我遗漏了什么?
答案1
简短的回答:由于奇怪的文件系统魔法,它运行良好。
长答案:好吧,首先,让我们回顾一下普通增量备份系统的工作原理(我想您已经知道这一点,但只是为了设置场景......)假设您进行了初始备份和基于它的两个增量备份:
- 在初始备份中,它会从源复制所有文件
- 在第一个增量备份中,它仅复制自初始备份以来发生变化的文件
- 在第二次增量复制中,它仅复制自第一次增量复制以来发生变化的文件
为了从“最新备份”中恢复一堆文件,您需要将这三个文件拼接在一起,具体取决于每个文件的最后修改时间。
如果您删除第一个备份,那么自该备份以来未发生改变的所有文件(因此将在其中一个增量备份中进行备份)消失了。这就是你在问题中假设的情况。
时间机器的工作原理略有不同。以下是同一序列在时间机器中的工作方式:
- 在初始备份中,它会从源复制所有文件(复制到备份目标上的带有时间戳的快照目录中)。
在第一个增量中,它仅复制自初始备份以来发生变化的文件(到新的快照目录中)和添加指向未改变的文件和目录的硬链接(备份之间删除的文件和目录除外)。
硬链接是指向原始条目所指向的同一文件的附加目录条目。标准 unix 文件系统允许文件硬链接,但不允许目录硬链接;Apple 想出了如何在 MacOS 扩展文件系统下允许目录硬链接。无论如何,最终结果是第二个快照目录实际上包含全部第二次备份时存在的文件。
在第二次增量备份中,它再次仅复制自第一次增量备份以来发生变化的文件,并向未发生变化的文件和目录添加硬链接(已删除的文件和目录除外)。同样,此快照目录实际上包含第三次备份时存在的所有文件。
为了从“最新备份”中恢复一堆文件,不需要拼接,因为所有文件都已经在最新快照目录中。事实上,您只需在 Finder 中打开快照文件夹,然后查看全部该快照中的文件。但请不要进行更改,否则您不仅会弄乱该快照,还会弄乱与其关联的所有其他快照。
如果删除第一个备份,则其中的所有文件和目录解除链接来自该快照目录。但不一定会删除,只有在删除最后一个链接时才会删除。因此,只存在于该快照中的所有文件(/文件版本)都会被删除,但那些在后来的备份时仍然存在的文件仍然存在,并且仍然存在于它们有效的其他快照中。
事实上,你(或 Time Machine 备份系统)可以删除快照以任何顺序而不会在后续备份中造成间隙。TM 将此用作其标准备份计划的一部分:它每小时创建一个新快照,但 24 小时后它会开始删除其中的大部分,每天只留下一个。一个月后,它会开始删除大部分每日快照,每周只留下一个。由于硬链接,这不会导致保留的快照中有任何文件丢失。
(但再次强调:不要在备份目录中进行更改,否则可能会破坏某些内容。TM 可以选择删除特定快照,或从所有快照中删除特定文件,这些都是安全的。其他更改……则不那么安全。)