rsync備份【基於客戶端與服務端】

Dusk_Yun發表於2024-08-17

一、需求

1、客戶端

  1. 客戶端提前準備存放到的備份目錄,目錄規則如下:/backup/nfs_IP+年/月/日
  2. 客戶端在本地打包備份(將etc目錄中所有的普通檔案打包)複製到目標目錄/backup/nfs_IP+年/月/日
  3. 客戶端最後將備份的資料進行推送到備份伺服器中
  4. 客戶端每天凌晨1點定時執行該指令碼
  5. 客戶端伺服器本地保留最近7天的資料,避免浪費磁碟空間

2、服務端

  1. 服務端部署rsync,用於接收客戶端推送過來的備份資料
  2. 服務端需要每天校驗客戶端推送過來的資料是否完整?[可以透過md5sum]
  3. 服務端需要每天校驗結果並推送給管理員
  4. 服務端僅保留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 {} \;

相關文章