我正在尝试提出一些备份系统,使我每次进行新备份时都能传输最少量的数据。
目前,我正在通过 duplicity 向 smb 挂载点执行增量备份。目前我的速度被限制在 1MB/s 左右(wifi/ndiswrapper 有点傻,但即使如此 - 修复它也不会让我获得超过 5 倍的速度提升)。
不幸的是,删除、修改等数据使得很难永久保留增量备份。我无法轻松地将它们压缩为完整备份,而且现在复制 40+GB 的完整副本需要花费一些时间。
我希望通过新系统实现以下几点,但还有一些我不太关心的:
- 我希望有几个检查点,但可能不超过 2 个或 3 个
- 我不关心加密,因为存储位于本地网络上
- 压缩效果会很好,但我想我只能使用文件系统/设备压缩
- 我希望能够完全删除除最新备份之外的所有备份,而无需再次进行完整复制
这似乎可以通过 rsync + 循环设备压缩 + fs 快照来实现... 但不幸的是我的设备并不真正支持快照。它只是有标准 debian 支持的文件系统列表,而且我真的不想使用 btrfs 进行备份。
有没有类似的解决方案?我还能用什么方法解决?
编辑:我认为快照部分实际上可以通过 lvm 只读快照来完成。这还可以为不良应用程序提供另一层保护。
答案1
快照通过使用硬链接和 rsync 进行增量备份 - 如果文件与上次运行备份时的文件相同,则只会对其进行硬链接。因此,如果您不做任何更改,并且每小时运行一次 rsnapshot 持续三个小时,您将有三个文件夹:
hourly.0
hourly.1
hourly.2
每个文件似乎都包含“完整”备份,但磁盘上只会驻留每个文件的一个副本。这意味着,如果您删除 hourly.2,hourly.1 和 hourly.0 仍将包含所有文件。您可以设置备份频率和快照数量。
这将实现您的第一个目标,但是目标文件系统必须支持硬链接才能实现这一点。
另一种方法是使用 rsync +逻辑卷管理器在备份设备上,并定期拍摄快照。LVM 快照是“写时复制”卷,通过重新使用与快照卷相同的块,它们与原始卷保持相同,除非块发生变化,此时快照卷仅存储不同的块。因此,可以调整其大小以匹配备份之间快照卷的变化率。
压缩会很好,但如果你不想使用 btrfs,那么就需要通过循环或保险丝进行某种文件系统压缩。