rsync实现全网备份案例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync实现全网备份案例相关的知识,希望对你有一定的参考价值。

全网备份案例

某公司里有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份.

要求:
每天晚上12点整在web服务器A(web01)上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留
(备份思路可以是先在本地按日期打包,再利用rsync推到备份服务器上)
具体要求:
1)web服务器A和备份服务器B的备份目录必须都为/backup
2)web服务器A和站点目录假定为(/var/www/html)
3)web服务器A本地仅保留7天内的备份
4)备份服务器上[每周六的数据都保留],其他备份仅保留180天备份
5)备份服务器上检查备份结果是否正常,并将每天的备份结果发给管理员信箱

web服务器的操作步骤:

第一步:
在web服务器上根据日期打包文件到/backup备份目录,将要打包的文件都放在备份目录下
tar zchf /backup/html.date +%F_%w -d ‘-1day‘.tar.gz /var/www/html/
tar zchf /backup/conf.date +%F_%w -d ‘-1day‘.tar.gz /etc/rc.local /etc/hosts /var/spool/cron/

第二步:
在将备份目录推送之前,加指纹信息,方便服务端的验证,前提是创建指纹的客户端路径和服务端路径相同才可以
最好是在客户端生成目录,推送到服务端的backup
find /backup/ -name ‘*.tar.gz‘ |xargs md5sum >/backup/check.txt
md5sum -c check.txt
/backup/conf.2018-01-22.tar.gz: OK
/backup/html.2018-01-22.tar.gz: OK

第三步:
将已经备份好压缩文件推送到rsync备份服务器上,推送完整的数据,到模块指定的目录下
rsync -az /backup/ [email protected]::backup/web01 --password-file=/etc/rsync.password
但是当创建了web01这个目录时,指纹就不可以使用了,因为客户端和服务端的路径不相同,这也是为什么要目录相同的原因

第四步:
推送完以后,按照要求,仅保留7天以内的备份
find /backup -name ‘*.tar.gz‘ -mtime +7 -type f |xargs rm -f

第五步:
将完成的步骤编写一个脚本放在定时任务中
vim /server/scripts/web01.backup.sh
#!/bin/bash

#backup html and conf
tar zchf /backup/html.date +%F_%w -d ‘-1day‘.tar.gz /var/www/html/ &>/dev/null
tar zchf /backup/conf.date +%F_%w -d ‘-1day‘.tar.gz /etc/rc.local /etc/hosts /var/spool/cron/ &>/dev/null

#make md5
find /backup/ -name ‘*.tar.gz‘ |xargs md5sum >/backup/check.txt

#rsync push backup
rsync -az /backup/ [email protected]::backup --password-file=/etc/rsync.password

#del 7 days ago
find /backup -name ‘*.tar.gz‘ -mtime +7 -type f |xargs rm -f

crontab -e
#backup conf and html
00 00 * /bin/bash /server/scripts/web01.backup.sh &>/dev/null

rsync服务器的操作步骤:

第一步:
发送邮件给运维管理人员
md5sum -c /backup/check.txt >/backup/result.log
mail -s "result" [email protected] </backup//result.log

第二步:
删除180天之前的备份文件,保留每周六的备份文件
find /backup/ -name ‘.tar.gz‘ ! -name ‘_6.tar.gz‘ -mtime +180 |xargs rm -f

第三步
编写脚本以及定时任务
vim /server/scripts/web01.sh

#!/bin/bash

#check and send mail
md5sum -c /backup/check.txt >/backup/result.log
mail -s "result" [email protected] </backup//result.log

#del 180 days ago and save sat
find /backup/ -name ‘.tar.gz‘ ! -name ‘_6.tar.gz‘ -mtime +180 |xargs rm -f

crontab -e
#send mail and del
00 00 * /bin/bash /server/scripts/web01.sh &>/dev/null

使用md5sum时存在的不足
问题:
如果客户端使用rsync命令在服务端创建的md5sum指纹文件,会存在服务端路径为/backup/web01,而客户端创建指纹的路径是/backup,所以不能验证
解决:
在客户端创建一个目录,也就是/backup/web01.直接将web01这个目录推送到服务端,所以服务端的路径和客户端的相同,指纹可以使用

客户端:
vim /server/scripts/web01.backup.sh

#!/bin/bash

#backup html and conf
tar zchf /backup/web01/html.date +%F_%w -d ‘-1day‘.tar.gz /var/www/html/ &>/dev/null
tar zchf /backup/web01/conf.date +%F_%w -d ‘-1day‘.tar.gz /etc/rc.local /etc/hosts /var/spool/cron/ &>/dev/null

#make md5
find /backup/web01 -name ‘*.tar.gz‘ |xargs md5sum >/backup/web01/check.txt

#rsync push backup
rsync -az /backup/web01 [email protected]::backup --password-file=/etc/rsync.password

#del 7 days ago
find /backup/web01 -name ‘*.tar.gz‘ -mtime +7 -type f |xargs rm -f

服务端:
vim /server/scripts/web01.sh

#!/bin/bash

#check and send mail
md5sum -c /backup/web01/check.txt >/backup/web01/result.log
mail -s "result" [email protected] </backup/web01/result.log

#del 180 days ago and save sat
find /backup/web01 -name ‘.tar.gz‘ ! -name ‘_6.tar.gz‘ -mtime +180 |xargs rm -f

以上是关于rsync实现全网备份案例的主要内容,如果未能解决你的问题,请参考以下文章

全网备份案例

全网备份案例

项目-第六次全网备份上机考试

rsync+inotify实现全网自动化数据备份-技术流ken

全网备份案例

rsync---全网备份---实现步骤