一、需求
1、客戶端
- 客戶端提前準備存放到的備份目錄,目錄規則如下:/backup/nfs_IP+年/月/日
- 客戶端在本地打包備份(將etc目錄中所有的普通檔案打包)複製到目標目錄/backup/nfs_IP+年/月/日
- 客戶端最後將備份的資料進行推送到備份伺服器中
- 客戶端每天凌晨1點定時執行該指令碼
- 客戶端伺服器本地保留最近7天的資料,避免浪費磁碟空間
2、服務端
- 服務端部署rsync,用於接收客戶端推送過來的備份資料
- 服務端需要每天校驗客戶端推送過來的資料是否完整?[可以透過md5sum]
- 服務端需要每天校驗結果並推送給管理員
- 服務端僅保留6個月的備份資料,其餘全部刪除
二、客戶端指令碼配置
#!/bin/bash
# 建立資料夾
mkdir /backup
# 建立包含自身ip和時間的一個目錄
mkdir -p /backup/nfs_`ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`
# 對需要的目錄或者檔案進行壓縮
tar -zcvf /backup/nfs_`ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`/etc.tar.gz $(find /etc/ -type f)
# 進入對應資料夾,避免'/'報錯提示
cd /backup/nfs_`ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`
# md5校驗,避免資料傳輸之後資料錯亂
md5sum etc.tar.gz > md5xfs.log
# 上傳
rsync -azv /backup/ rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.pass
# 客戶端伺服器本地保留最近7天的資料,避免浪費磁碟空間
find /backup/ -ctime +7 -name 'xfs.*'|xargs -rm
三、服務端指令碼配置
#!/bin/bash
cd /backup/nfs_`ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F` # 進入對應資料夾(根據具體情況而定+)
md5sum -c md5xfs.log # 進行MD5校驗
if [ $? -eq 0 ];then # 判斷上一級最終結果是否為0,這裡是shell
echo "驗證成功" | mail -s "驗證結果" 15719154792@163.com
else
echo "驗證失敗" | mail -s "驗證結果" 15719154792@163.com
fi
find /backup/ -ctime +180 -name "nfs.*" -exec rm -rf {} \;