镜像rsnapshot备份目录

时间:2012-05-21 19:40:08

标签: ssh backup rsync

我想将rsnapshot使用的备份目录镜像到第二个位置以获得更高的安全性。理想情况下,解决方案将使用rsync和ssh。我需要为rsync提供哪些参数来保留硬链接(由rsnapshot创建)和符号链接,删除文件,递归复制,删除目标中的文件等?这些文件都在ext3文件系统上。此外,我该怎么做才能避免如果源被破坏的可能性,那么缺陷就会被反射到镜子中?

2 个答案:

答案 0 :(得分:7)

我认为执行所需操作的选项主要记录在rsync手册页中。特别是,-H选项(--hard-links)启用了硬链接检测,--delete将导致rsync删除目标上源上不存在的内容。所以可能是这样的:

rsync -aH --delete /path/to/src/ /path/to/destination
  

此外,我还能做些什么来避免如果源被破坏,那么缺陷就会被反射到镜子中?

嗯,这很棘手。你如何发现腐败?我认为唯一真正的解决方案是错开备份备份(即,将实际备份执行到主目标,然后在下次备份运行之前将其同步到辅助目标)。这样,如果您在下次备份运行之前检测到问题,就可以恢复原状。

另一种解决方案是让rsnapshot备份到多个目的地,这样您实际上就可以在两个不同的位置从原始源生成备份。这样,如果一个人受损,第二个应该不受影响。

答案 1 :(得分:1)

为了防止损坏数据的副本,您可以保留每周备份,并希望在丢失所有备份之前,您会注意到源代码中的损坏。最好的方法是使用-c然后它将比较源和目标的校验和来确定是否复制文件。唯一的缺点是它必须读取整个文件,使备份过程变慢。

#!/bin/sh
# Create a Backup of Today
# Definitions
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A)
# Delete backups from 7 days ago
rm -rf /storage/backups/$sevendaysago
mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username

rsync -aHvz /storage/`date --date=yesterday +\%Y-\%m-\%d`-`date --date=yesterday +\%A`/$host/$user/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/

rsync -acHvz -e ssh --delete --exclude='logs' tim@tim.tim.net:/home/tim/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/
相关问题