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

rgc*_*ini 2 backup rsync incremental-backup

我打算使用我拥有的一台旧计算机作为我自己和其他一些人的远程备份服务器。我们在地理上都是分开的,计划是使用 rsync 和 ssh 进行每日增量备份。

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

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

编辑:

我应该更好地解释一点。当我要使用 rsync进行增量备份时,我的意思是:

rsync -avh --delete --link-dest=./remote/previous_increment ./local/ ./remote/new_increment
Run Code Online (Sandbox Code Playgroud)

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

如果我通过断开最后一个快照上的链接并将其复制到另一个受写保护的 HD(例如,每月一次)来定期在服务器端进行合成完整备份,该怎么办?这样我就会有一个冗余的完整副本,并且仍然可以避免重新发送文件的开销。

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

Mic*_*ann 6

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

您使用的是更高级的(rsnapshot?),您总是存储完整的数据集,但通过使用硬链接在备份之间共享数据来保持最小的开销。通过这种方式,您可以删除旧备份而不会使当前备份无效。所以通常的论点不算数。

编辑:

rsnapshot 的工作原理如下:

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

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

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

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

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

编辑2:

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