要恢复增量备份,我们需要首先恢复完整备份,然后按相同顺序恢复增量备份,然后删除已删除的文件。恢复文件然后删除它们是没有用的,对于大文件来说这是浪费时间。有没有办法避免使用tar
?
答案1
如果您想跳过提取某些文件,则需要在提取它们之前知道它们的名称。
这需要您提前完整阅读所有磁带以分析内容。换句话说:恢复时间将增加一倍。鉴于如今,典型文件系统的备份恢复需要一天以上的时间,这似乎不是一个有用的替代方案。
如果您知道周一哪些文件将在周二被删除,则备份可能会更有效,但周一的备份仅包含周一的信息。
备份的效率取决于它的元数据集,而 GNU tar 存储的元数据非常少。 GNU tar 只知道归档目录中所有文件的名称。
典型的备份实用程序比 GNU tar 存储更多的元数据。 GNU tar 档案中缺少的一个重要信息是所有文件的索引节点号列表。如果备份中有索引节点号,则可以跟踪文件重命名。由于缺乏元数据,GNU tar 无法跟踪重命名。
如果您有一个存储足够元数据的备份程序,则恢复增量备份的最先进方法如下:
从空的目标文件系统开始
将初始完整转储提取到目标文件系统,并保留一个数据库,该数据库记住哪些文件是目录,哪些文件是非目录,以及备份文件系统中的原始 inode 编号以及文件系统上使用的新 inode 编号发生恢复。
按照创建顺序提取增量后续备份。
对于恢复的当前增量中的每个文件和目录,检查其数据库中的 inode 编号以获取相关的新 inode 编号。如果数据库中没有新的 inode 号,则这是一个新文件,如果数据库中已经有新的 inode 号,并且当前文件名不同,则将文件重命名为当前名称。
如果从增量存档中提取目录及其内容,并且文件/目录不再处于该目录的新状态,则将当前位于目标文件系统上但不在刚刚处理为临时目录的所有这些文件/目录重命名目录并记住临时名称。
如果当前增量已完全恢复,并且临时重命名的文件所在的目录中还有剩余文件,则这些文件是原文件系统中已删除的文件,因此需要在新的目标文件系统上删除。
由于这个原因,您可能总是需要能够在新的目标文件系统中存储比源文件系统更多的数据。由于 GNU tar 备份中的元数据很少,因此与存储更多元数据的解决方案相比,GNU tar 倾向于需要更多的空间用于增量备份,并且在目标文件系统中需要更多的额外空间。