在增量备份设置中是否真的需要定期进行完整备份?

在增量备份设置中是否真的需要定期进行完整备份?

我打算用我的一台旧电脑作为我和其他几个人的远程备份服务器。我们地理上都分开,计划使用 rsync 和 ssh 进行每日增量备份。

我最初的想法是进行一次初始完整备份,然后再也不用处理这样做的开销,从那一刻起,只复制自上次备份以来更改的文件。

有人告诉我这可能很糟糕,但我不明白为什么。由于每个快照都由未更改文件和原始更改文件的硬链接组成,它不是会与新的完整备份完全相同吗?我为什么要进行另一次完整备份?

编辑:

我应该更好地解释这一点。当我说我要做什么时增加的使用 rsync 备份,我的意思是这样的:

rsync -avh --delete --link-dest=./remote/previous_increment ./local/ ./remote/new_increment

这将生成一个完整且有效的快照,因为它将包含指向所有未更改文件的硬链接。即使完整备份和所有先前的增量备份被删除,最后一个增量备份仍然一致。但我非常确定,如果任何先前的文件损坏,最后一个文件也会损坏,因为它们指向相同的 inode。

如果我定期在服务器端进行合成完整备份,方法是断开最后一个快照上的链接并将其复制到另一个写保护的硬盘(例如,每月一次)。这样,我将拥有一个冗余的完整副本,并且仍可避免重新发送文件的开销。

这能解决问题吗?我还需要做完整备份吗?

答案1

通常,如果您进行增量备份,您只会以某种方式(如 tar 存档)存储实际更改的文件,而未更改的文件仅保存在较早的备份文件中。这样,您将需要所有备份文件进行恢复,并且永远无法删除旧备份。由于这不切实际,您需要在一段时间后进行新的完整备份。

您使用的是更高级的(rsnapshot?),您始终存储全套数据,但通过使用硬链接在备份之间共享数据,将开销降至最低。这样,您可以删除旧备份而不会使当前备份无效。因此,通常的参数不计算在内。

编辑:

rsnapshot 的工作原理如下:

第一次它只是使用 rsync 创建完整副本。

此后的任何备份都会创建一个新的完整目录树,其中所有文件都是指向上一次备份的硬链接。之后,通过在此树上运行 rsync 来替换更改的文件。

因此,每个备份都是完整的,但会与旧备份共享数据。如果您删除旧备份,则只有与所有其他备份不同的文件才会被真正删除。对于共享文件,只有硬链接计数会减少 1。

备份的开销是额外的目录树,当然,它也占用一些空间。但您可以删除旧的备份树而不影响剩余的目录树以恢复该空间。

您的备份策略描述对我来说听起来像 rsnapshot。

编辑2:

如果您担心位衰减(即现有备份文件被损坏),则可以将选项 -c 添加到 rsync,该选项会在本地和远程文件上创建 MD5 校验和。这会显著增加磁盘 I/O,因为必须读取每个文件。但网络流量只会略有增加,因为只需额外传输每个文件的校验和。这将消除进行新完整备份的最后一个原因。

答案2

增量备份(即使用rsync)的过程比静态备份(即使用)更复杂cp。有些人认为增量备份更容易损坏。

  1. 故障可能出在工具本身上;rsync在 Windows 上已知存在缺陷,并且有时会删除不应该从备份中删除的文件。

  2. 如果您的备份工具仅存储文件版本之间的二进制差异,则文件中间版本的丢失可能会导致无法重建文件的最终版本。


无论您的备份解决方案是什么,定期测试通过从备份中恢复数据副本。

答案3

我认为其中存在沟通错误。

大多数时候当我听到完整备份增量备份人们的意思是:
完整:备份所有数据。
增量:仅备份更改部分。

如果需要恢复备份,则先从完整备份开始,然后全部增量备份。这可能需要花费大量时间。这就是为什么许多公司在周末进行完整备份,在工作日进行部分备份的原因之一。最多可以进行五次部分备份。

现在 rsync 通常不进行部分备份。它只通过网络发送更改,但最终结果是所有数据的完整副本。因此,不使用部分备份的最常用原因并不适用。


请注意,最好至少备份两次。一次备份已知完好,另一次备份可用。要么在两次备份之间交替备份,要么制作并测试年度备份,将其设置为只读,然后使用其他备份直到明年。然后重复。

相关内容