1. 程式人生 > >Rsync備份全網伺服器資料企業案例

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為目錄儲存備份,備份的檔案按照時間名字儲存。
    • 需要確保備份的資料儘量完整正確,在備份伺服器上對備份的資料進行檢查,把備份的成功及失敗結果資訊傳送給系統管理員郵箱中。

環境部署

作業系統

[[email protected] ~]# cat /etc/redhat-release 
CentOS release 6.8 (Final)

核心版本

[[email protected] ~]# 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/ [email protected]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