rsync-全网备份全网实战备份

要求:定期备份服务器中重要的文件,并且在凌晨00:00执行。备份后发送邮件通知管理员备份状态。

rsync.png

具体要求如下:


1)所有服务器的备份目录必须都为/backup
2)要备份的系统配置文件包括但不限于:
      a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)
      b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)
      c.日常脚本的目录(/server/scripts)
      d.防火墙iptables的配置文件(/etc/sysconfig/iptables)
      e..............自己思考
3)Web服务器站点目录假定为(/var/html/www)
4)Web服务器A访问日志路径假定为(/app/logs)
5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。
7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存
8)需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发
9)要求:每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送

实施的整体过程

一服务端

 1.检查软件是否安装

rpm -qa rsync   如果没有安装就yum -y install rsync

2.服务端配置文件的添加 (vim  /etc/rsyncd.conf)

uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = no
list = no
hosts allow =172.16.1.0/24   
auth users = rsync_backup
secrets file =/etc/rsync.password
[backup]
path = /backup

3.创建备份目录的管理权限用户

useadd -s /sbin/nologin -M rsync

4.创建备份数据目录

mkdir -p /backup
chown -R rsync.rsync /backup

5.创建密码认证用户文件

echo "rsync_backup:123456"  >>/etc/rsync.password
chmod 600 /etc/rsync.password

6. 启动rsync-------####xinetd

rsync --daemon      启动
ps -ef |grep rsync   查看进程
echo "rsync --daemon" >>/etc/rc.local    添加开机启动

二,客户端

1.检查rsync 是否安装

rpm -qa rsync   如果没有安装就yum -y install rsync

2.创建认证文件

echo "123456" >/etc/rsync.passwd     这里的认证必须要和服务器的密码一致
chmod 600 /etc/rsync.passwd

3.测试推送

rsync -avzP /etc/services rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

三 客户端NFS服务器的脚本编辑(rsync客户端)

  1. 创建备份的目录

mkdir -p /backup

  2. NFS和Web服务器上文件进行打包备份,/backup 目录

  1)  NFS 服务器打包的命令

tar zcvhf /backup/systemfile_info.tar.gz /var/spool/cron/root  /etc/rc.local /server/scripts /etc/sysconfig/iptables
注:tar打包时使用h参数表示当要打包的数据文件是软链接时不会打包软链接,而是打包真实路径文件

2)推送推送命令到rsync服务器

rsync -avz /backup/  rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

3)删除7天之前的数据

find /backup -type f  -name "*.tar.gz" -mtime +7 -exec rm {} \;    方法一
find /backup -type f  -name "*.tar.gz" -mtime +7 |xargs rm -f      方法二
find /backup -type f  -name "*.tar.gz" -mtime +7 -delete           方法三

4)对客户端备份的数据进行指纹验证(指纹文件同备份文件一并rsync到服务器)

cd /backup && md5sum systemfile_info.tar.gz > systemfile_info_md5.txt

5)脚本的编写

#! /bin/bash
# name: nfs_backup.sh
# time: 2017.8.21
# desc: backup rsync client data info 
# author guoxiangfu
IP=$(hostname -i)            #取IP
mkdir -p /backup/$IP &&\      ###创建客户端备份目录
#把系统数据打包到/打包到/backup下并且
cd / && tar zcfh /backup/$IP/ifconfig_backup_$(date +%F_week0%w).tar.gz var/spool/cron etc/rc.local server/scripts etc/sysconfig/iptables &&\
 
#把打包的数据生成指纹信息
find /backup/$IP/ -type f -name "*$(date +%F_week0%w).tar.gz" |xargs md5sum >/backup/$IP/check_info_$(date +%F_week0%w).txt
#推送系统数据包以及指纹文件到rsync服务器41的/backup目录中
rsync -az /backup/$IP rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#删除7天之前的数据
find /backup/$IP/ -type f -mtime +7 |xargs rm –f
#脚本的检查命令 sh -x /server/scripts/nfs.backup.sh

四客户端WEB服务器的脚本编辑(rsync客户端)

#! /bin/bash
# name: nfs_backup.sh
# time: 2017.8.21
# desc: backup rsync client data info 
# author guoxiangfu
IP=$(hostname -i)            #取IP
mkdir -p /backup/$IP &&\      ###创建客户端备份目录
#把系统数据打包到/打包到/backup下并且
cd / && tar zcfh /backup/$IP/ifconfig_backup_$(date +%F_week0%w).tar.gz var/spool/cron etc/rc.local server/scripts etc/sysconfig/iptables &&\
 
#把打包的数据生成指纹信息
find /backup/$IP/ -type f -name "*$(date +%F_week0%w).tar.gz" |xargs md5sum >/backup/$IP/check_info_$(date +%F_week0%w).txt
#推送系统数据包以及指纹文件到rsync服务器41的/backup目录中
rsync -az /backup/$IP rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
##删除7天之前的数据
find /backup/$IP/ -type f -mtime +7 |xargs rm –f
#脚本的检查命令 sh -x /server/scripts/Web_backup.backup.sh

五计划任务的编写

1 NFS服务器的(rsync客户端编写)

crontab -e
#备份数据信息
00 00 * * * /bin/sh /server/scripts/nfs.backup.sh &>/dev/null

2 Web服务器(客户端)

#备份数据信息
00 00 * * * /bin/sh /server/scripts/Web_backup.sh &>/dev/null

六backup服务器的脚本(rsync服务端)

  1. 验证数据完整性

find /backup/ -type f -name "check_info_$(date +%F_week0%w).txt" |xargs md5sum -c >/backup/check_info_$(date +%F_week0%w).txt

2.  邮件配置

vim /etc/mail.rc 增加如下:
set from=guoxiangfu@guoxiangfu.com #邮箱地址  smtp=smtp.guoxiangfu.com
set smtp-auth-user=guoxiangfu #邮箱账号  smtp-auth-password=123456  #授权码 smtp-auth=login

3. 将验证结果通过邮件发送给管理员

mail -s "check_rsync_data mail" 978299310@qq.com </backup/check_info_$(date +%F_week0%w).txt  邮件发送邮件方式1
echo "rsync_server" |mail -s "check_rsync_data mail" 978299310@qq.com   邮件发送邮件方式2

3. 脚本编写

vim /server/scripts/server_backup.sh
检查备份数据的是否完整
find /backup -type f -name "*$(date +%F_week0%w).txt" |xargs md5sum -c >/tmp/mails.txt
#把数据完整性的检查状态通过邮件的形式发送
mail -s "check data" 978299310@qq.com </tmp/mails.txt
#删除180天前的数据进行删除,但保留每周一数据
find /backup -type f -mtime +180 ! -name  "*week01.tar.gz" |xargs rm –f


打赏 支付宝打赏 微信打赏

最后编辑于:2017/08/21作者: 富华运维空间

相关推荐

发表评论

动态鼠标蜘蛛网特效