使用 rsync 进行完整差异备份的最有效且安全的方法

使用 rsync 进行完整差异备份的最有效且安全的方法

我在网上搜索找到一种方法来对我的 Linux 机器(不是服务器)进行完整备份并随时恢复所有内容。

我从每个线程上链接最多的指南开始,http://www.mikerubel.org/computers/rsync_snapshots/index.html我认为这种类型的备份是增量备份,经过一天的研究我发现 差异备份和增量备份在rsync命令方面有什么区别?和其他讨论,但我不确定我真正在做什么。

按照指南和帖子,我决定尝试使用一个名为 source 的文件夹(在备份整个系统之前)

rsync -av --delete /home/user/source /home/user/backup/backup0/

然后我添加和删除了一些文件并进行了三次备份

rsync -avH --delete --link-dest=/home/user/backup/backup0 /home/user/source /home/user/backup/backup1 

rsync -avH --delete --link-dest=/home/user/backup/backup1 /home/user/source /home/user/backup/backup2

rsync -avH --delete --link-dest=/home/user/backup/backup2 /home/user/source /home/user/backup/backup3

我认为通过这种类型的备份,我将会得到类似的东西:

backup0-->backup1-->backup2-->backup3

因此,如果我想恢复“backup3”的内容,则需要#1和#2,但我删除了它们,然后恢复了backup3,一切都恢复原状。所以我跑了

user@user:/backup$ du -sh *
450M    backup0
620K    backup1
624K    backup2
628K    backup3

它看起来像差异备份,而不是增量备份,但我认为要进行差异备份,我必须为每个备份进行设置 --link-dest=/home/user/backup/backup0

我的问题是:我是否弄错了什么?有没有更好的方法使用 rsync 备份整个系统?

PS:目标设备将是具有相同文件系统的外部驱动器。

答案1

使用硬链接,可以存储一个文件的多个副本,并且只占用一份副本的磁盘空间。您所看到的是,du请注意不要重复计算同一文件的多个硬链接所占用的空间。

如果你要运行:

du -sh backup3

你会发现backup3占用了450M左右。如果你运行:

du -sh backup2 backup3

你会发现backup2占用了大约450M,而backup3占用很少。这是因为du首先查看了 backup2 并计算了它的空间。当它查看 backup3 时,它只计算使用的新磁盘空间,而不计算 backup2 中已计算的文件的硬链接。

每个备份都是完整的,并且包含执行完整恢复所需的一切。然而,由于文件是硬链接的,因此使用的总磁盘空间要少得多。

例子

我在目录中放置了一个1.2MB的文件src/。让我们创建两个备份:

$ rsync -a src backup1
$ rsync -a --link-dest=../backup1 src backup2

让我们看看 backup2 有多大:

$ du -sh backup2
1.2M    backup2

backup2 有 1.2 MB。现在让我们看看 backup1 和 backup2 有多大:

$ du -sh backup1 backup2
1.2M    backup1
8.0K    backup2

现在,backup2 看起来只有 8k。这是因为硬链接没有被重复计算。

答案2

硬链接是节省磁盘空间的最佳方法。我没有使用 rsync 编写脚本,而是使用一个包装器来完成这项工作:蝴蝶备份

该包装器使用纯 rsync 并将 rsync 转换为真正的备份/恢复工具(它还具有存档/导出模式)。

此外,在其选项中,它具有--mode/-m允许您选择备份模式的标志增加的或者微分

差分模式将保持第一个完整,然后所有后续备份都将连接到它,由于硬链接,节省了大量空间。

一个例子:

$ bb backup --computer mypc --destination /backup --data User --type Unix
 --mode Differential

相关内容