Rsync備份全網伺服器資料企業案例
阿新 • • 發佈:2018-11-25
【企業案例】
某公司裡有一臺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