Rsync备份全网服务器数据企业案例

【企业案例】

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

每天晚上00点整在NFS服务器nfs01上打包备份网站程序目录等并通过rsync命令推送到备份服务器backup上备份保存(备份思路 可以是先在本地按IP地址+日期打包,然后再利用rsync推送到备份服务器上)。NFS存储服务器同Web服务器,实际工作中就是全部的服务器。

具体要求如下:

    • NFS服务器nfs01和备份服务器backup的备份目录必须都为/backup
    • 要备份的系统配置文件包括但不限于:
      Web服务器站点目录假定为(/var/html/www)
      • 定时任务服务的配置文件(/var/spool/cron/root)
      • 开机自启动的配置文件(/etc/rc.local)
      • 日常脚本的目录(/server/scripts)
      • 防火墙iptables的配置文件(/etc/sysconfig/iptables)
      • 自己思考下还有什么需要备份呢
    • Web服务器A访问日志路径假定为(/app/logs)
    • Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
    • 备份服务器上,保留每周一的所有数据副本,其它只保留6个月的数据副本
    • 备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
    • 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发送给系统管理员邮箱中。

环境部署

操作系统

[root@backup ~]# cat /etc/redhat-release 
CentOS release 6.8 (Final)

内核版本

[root@backup ~]# uname -r
2.6.32-642.el6.x86_64

NFS服务器脚本
#!/bin/bash

IP=`ifconfig eth0 | /bin/awk -F "[ :]+" 'NR==2{print $4}'`

[ -d /backup/$IP ] || /bin/mkdir -p /backup/$IP
if [ $(date +%w) -eq 1 ];then
        date="$(date +%F)_monday"
else
        date="$(date +%F)"
fi

/bin/tar zcfh /backup/$IP/config-$date.tar.gz /var/spool/cron/root /etc/sysconfig/iptables /etc/rc.local /server/scripts /etc/sysconfig/iptables &>/dev/null
/bin/tar zcf /backup/$IP/web-$date.tar.gz /var/html/www &>/dev/null
/bin/tar zcf /backup/$IP/logs-$date.tar.gz /app/logs &>/dev/null
/bin/find /backup -type f -name "*.tar.gz" | xargs md5sum > /backup/$IP/check-$(date +%F)
/usr/bin/rsync -avz /backup/ rsync_backup@192.168.200.128::backup/ --password-file=/etc/rsync.password &>/dev/null
/bin/find /backup -type f -mtime +7 | xargs rm -f

备份服务器检查脚本

#!/bin/bash

IP=`/bin/find /backup/ -type d -name "192.168.*"`

for i in $IP
do
        cd $i
        [ -f check-$(date +%F) ]
        if [ $? -eq 0 ];then
                /usr/bin/md5sum -c check-$(date +%F) &>/dev/null
                if [ $? -ne 0 ];then
                        echo "$i校验失败"
                else
                        echo "$i校验成功"
                fi
        else
                echo "没有$i的校验文件"
        fi
        let a++
done
echo "共有$a个客户端推送成功"

/bin/find /backup -type f ! -name "*_monday" -mtime +180 | xargs rm -f

注:备份服务器需要配置rsync

猜你喜欢

转载自www.cnblogs.com/heroke/p/10014867.html