• 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

  • 相关阅读:
    三、oneinstack
    二、两条Linux删除数据跑路命令
    一、定时任务
    三、Docker网络
    C#数据结构
    四、字段大全
    【2019-06-14】同事的低迷
    【2019-06-13】同事的进步
    【2019-06-12】看书的好地方
    【2019-06-11】笔耕不辍
  • 原文地址:https://www.cnblogs.com/heroke/p/10014867.html
Copyright © 2020-2023  润新知