我有一个运行rsnapshot的主备份服务器,其上存有〜2TB的备份。 在夜间备份之后,我使用rsync -aH --delete /source /dest
将rsnapshot目录的内容复制到非现场服务器。 但是,这似乎是每晚复制备份目录的全部内容,因为非现场复制需要大约9个小时才能完成。
我假设我的rsync命令没有正确的开关,但可能有其他东西我错过了。 有任何想法吗?
这里的问题是,如果你想在整个远程位置保留一个完整版本的备份副本,那么你将不得不处理一个事实,即当它运行时,rsnapshot会旋转目录名称,所以你最终会得到一个每次都复制最近一次备份的新副本。
您可以根据执行副本的时间以及何时轮换(重命名)目录来更改rsnapshot的运行方式,也可以在执行周期的rsnapshots中的各个点执行脚本,例如在运行特定备份点之前或之后。
这里有一个有用的post:
https://stackoverflow.com/questions/10691522/mirror-rsnapshot-backup-directory
另一种方法是在你的第二台机器上获得一个rsnapshot的副本,并备份/snapshot_root/daily.0的内容。 这与正确的rsync标志一起会为您提供最新备份的增量副本。
我相信你只是多次复制相同的文件。 希望这些详细信息如何通过rsnapshot工作来帮助解决问题。
这里是最重要的一点:
当每天运行rsnapshot时,它会转动所有daily.X目录,然后将hourly.5的内容复制到daily.0中 。
hourly.0将始终包含最近的快照, daily.6将始终包含一周前的快照。 除非在快照之间文件发生变化,否则完整备份实际上只是到相同文件的多个硬链接。 因此,如果你的
/etc/passwd
文件在一个星期内没有改变,hourly.0/localhost/etc/passwd
和daily.6/localhost/etc/passwd
就会是一样的文件。这就是rsnapshot在空间上如此高效的方式。 如果在任何时候文件发生了变化,下一次备份将以小时为单位0断开硬链接,并将其replace为全新的文件。
有一个选项叫做--link-dest
,它--link-dest
你的需要。 当这个参数指向你最近的备份时,如果src与你上一次备份中已有的数据不同,那么它只会将文件从src复制到dest。(由--link-dest
引用); 如果数据相同,则会创build符号链接,从而为您提供完整的版本化备份。
我使用此选项在单独的磁盘上本地创build每日快照,对于远程备份,您将需要对其进行修改,以确保在远程系统上正确创build符号链接。 我build议添加一些旧的备份轮换和一个初始的标准备份必须创build比较。
today=$(date "+%Y-%m-%d-%H-%M-%S") rsync -a --link-dest=/localbackups/latest/ /data/ /localbackups/${today} cd /localbackups/ rm -rf /localbackups/latest ln -s $today latest