我在网上搜索找到一种方法来对我的 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