需要有关 rsnapshot 的帮助。我每周都会使用 bash 脚本进行完整备份,这会占用大量磁盘空间。现在我正在考虑使用 rsnapshot,我想用 rsnapshot 进行每周增量备份和每月完整备份。因此,这就是我配置配置文件的方式
保留伽马 4
保留增量 1
并安排 cronjob
00 00 * * * 根 rsnapshot 伽马
00 00 1 * * 根 rsnapshot 增量
我有一个 rsnapshot 的根文件夹 /root/rsnapshots/。现在根据我的理解,对于每个每周增量备份,它将在这些文件夹中创建硬链接,并且新的增量备份将位于 gamma.0 上
- /root/rsnapshots/gamma.0
- /root/rsnapshots/gamma.1
- /root/rsnapshots/gamma.2
- /root/rsnapshots/gamma.3
并且每个月它是否会将所有 gamma.3 内容复制到 /root/rsnapshots/delta.0 或将所有 gamma.0 内容复制到 /root/rsnapshots/delta.0?
有人能在这里向我解释一下这种轮换是如何进行的吗?我之所以问这个问题,是因为我无法使用 VM 来测试这种每周和每月的 rsnapshot。
谢谢
答案1
数据去哪里了
首先你必须明白仅有的(最低级别)备份gamma
实际上会复制任何数据,所有其他备份只是旋转(又名重命名)并删除已经存在的快照(gamma
也这样做)。(见下文)
其次,硬链接文件只是出现在文件系统中多个位置的单个常规文件。只有在删除所有文件后,它才会被删除(此后它可能仍存在于磁盘上,只是您找不到它)。
所以,您的设置不会每月复制所有数据。增量备份与增量备份一样都是增量备份gamma
。由于您只有一个delta
备份,因此它本身不会比其他任何备份都增量。
每次调用时会发生什么
要了解每次调用备份级别时发生的情况,我强烈建议手册页retain
,特别是关于配置中的参数的部分。为了给你一个不同的解释(我也花了一段时间才理解手册页):
最低级别
每次你(或 cron)调用snapshot gamma
gamma.3
如果存在(最高可能的伽马备份),则将删除它。这会导致仅存在于该快照中的任何文件修订真正丢失。之后未更改的所有文件将出现在(gamma.2
作为硬链接)中,因此将保留。此后未更改的所有文件delta.0
将出现在中delta.0
。- 所有
gamma.X
文件夹都将移动到gamma.(X+1)
。这是一个简单的重命名操作。 - 新的快照
gamma.0
将以增量方式创建gamma.1
。同样,所有未更改的文件将不会被复制,但文件夹中的内容gamma.1
将同样显示gamma.0
(作为硬链接)。
更高级别
每次调用任何更高级别(在您的情况下为 delta)时,相应级别都会发生相同的情况,但新快照部分除外。相反,gamma.3
(下一个较低级别的最后一个可能快照)被移动(也称为重命名)到delta.0
(调用级别的.0
)。所有gamma
备份仍引用delta
旧版本的备份。
最高级别
这里唯一不同的是,由于没有早期的快照,所有过时的delta.0
(在您的情况下是最高级别)并且存在的文件修订delta.1
也将丢失。
另一种看待这个问题的方式是:如果你能以某种方式删除里面的每个文件(而不仅仅是它的外观)delta.0
(最后的备份)全部从那时起未发生改变的文件的备份就消失了。
PS:建议从最高级别到最低级别开始备份作业,否则gamma.2
文件夹将被旋转到gamma.3
,然后立即delta.0
旋转到,让您没有gamma.3
。这里的短暂延迟(10 分钟)已经足够了,因为只有少数重命名和删除操作是由较高级别执行的。此外,gamma
备份可能需要很长时间,因为它们会复制数据,导致时间和顺序丢失。