目錄
- 定時備份與清理服務
- 環境
- 需求概述
- 步驟詳解
- 1. 配置 rsyncd 服務
- 在 `backup 服務器`上配置 rsyncd
- 2. 在 nfs01 和 web01 上配置備份腳本
- 腳本:backup_configs.sh
- 配置定時任務
- 3. 在 backup 服務器上配置同步和清理腳本
- 腳本:cleanup_backups.sh
- 配置定時任務
- 4. 在backup服務器查看備份文件信息并發送備份狀態郵件
定時備份與清理服務
環境
- 操作系統:openEuler 22.03
- 備份服務器:backup
- 需要備份的服務器:nfs01, web01
- 備份目錄:/backup/
需求概述
- 定時備份
nfs01
和web01
的配置文件(/etc)到backup
服務器,備份文件格式為/backup/<ip地址>/conf-<時間>.tar.gz
。 - 定時同步
nfs01
和web01
的備份到backup
服務器的/backup/
目錄。 - 定時刪除
nfs01
和web01
7天之前的備份。 - 在
backup
服務器上發送備份狀態郵件。
步驟詳解
1. 配置 rsyncd 服務
在 backup 服務器
上配置 rsyncd
- 創建或編輯
/etc/rsyncd.conf
配置文件,內容如下:
# 全局配置
fake super = yes
uid = rsync
gid = rsync
use chroot = no
max connections = 4
ignore errors
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock# 模塊配置
[backup]path = /backupcomment = Backup Directoryread only = nolist = yesauth users = backupusersecrets file = /etc/rsyncd.secrets
- 創建用戶認證文件
/etc/rsyncd.secrets
,內容如下:
cat /etc/rsyncd.secretsbackupuser:password
- 設置文件權限:
useradd -s /sbin/nologin -M rsync
mkdir -p /backup
chown -R rsync.rsync /backupchmod 600 /etc/rsyncd.secrets
- 啟動
rsyncd
服務:
systemctl enable rsyncd --now
systemctl restart rsyncd
2. 在 nfs01 和 web01 上配置備份腳本
腳本:backup_configs.sh
- 在每臺需要備份的服務器(rsync客戶端)上創建腳本
/usr/local/bin/backup_configs.sh
,內容如下:
#!/bin/bash
#desc backup /etc to backupserver#變量
# 獲取當前時間
TIMESTAMP=`date +%F_%H`# 本地配置文件目錄
IP=`hostname -I | awk '{print $1}'`
CONFIG_DIR="/etc"
BACKUP_DIR="/backup/${IP}"
BACKUP_FILE="conf-${TIMESTAMP}.tar.gz"#命令
# 打包配置文件
tar -czf /tmp/${IP}/$BACKUP_FILE $CONFIG_DIR &> /dev/null
#從根目錄開始,將$CONFIG_DIR目錄中的文件打包并壓縮到一個名為$BACKUP_FILE的歸檔文件中,該文件將被保存在/tmp目錄下。#保存md5
md5sum /tmp/${IP}/${BACKUP_FILE} > /tmp/${IP}/fingerprint.md5# 使用rsync傳輸備份文件到備份服務器
rsync -avz --password-file=/etc/rsync.pass /tmp/${IP} backupuser@backup::backup/$BACKUP_DIR/# 刪除臨時備份文件
rm /tmp/$BACKUP_FILE# 記錄日志
echo "Backup completed for $(hostname) at $TIMESTAMP" >> /var/log/backup_configs.log
- 創建 rsync 密碼文件
/etc/rsync.pass
,內容如下:
cat /etc/rsync.passpasswordchmod 600 /etc/rsync.pass
- 設置腳本權限:
chmod +x /usr/local/bin/backup_configs.sh
配置定時任務
使用 crontab
添加定時任務,每天凌晨2點執行備份腳本:
crontab -e
添加以下內容:
0 2 * * * /usr/local/bin/backup_configs.sh
3. 在 backup 服務器上配置同步和清理腳本
腳本:cleanup_backups.sh
- 創建腳本
/usr/local/bin/cleanup_backups.sh
,內容如下:
#!/bin/bash# 備份目錄
BACKUP_DIR="/backup/"# 刪除7天之前的備份文件
find $BACKUP_DIR -type f -name "conf-*.tar.gz" -mtime +7 -exec rm -f {} \;# 記錄日志
echo "Cleanup completed at $(date +%Y%m%d%H%M%S)" >> /var/log/cleanup_backups.log
- 設置腳本權限:
chmod +x /usr/local/bin/cleanup_backups.sh
配置定時任務
使用 crontab
添加定時任務,每天凌晨3點執行清理腳本:
crontab -e
添加以下內容:
0 3 * * * /usr/local/bin/cleanup_backups.sh
4. 在backup服務器查看備份文件信息并發送備份狀態郵件
- 關于查看信息:
find /tmp -name "conf-*.tar.gz" | xargs ls -lhd | awk -F'[ /]+' 'BEGIN{print "IP FILE Size"}{print $(NF-1),$NF,$5}' | column -t
IP FILE Size
10.0.0.124 conf-2024-05-17_5_22:11:38.tar.gz 12M
10.0.0.124 conf-2024-05-17_5_22:12:40.tar.gz 12M
tmp conf-2024-05-17_5.tar.gz 12M2. md5驗證
```shell
find /backup/ -name "fingerprint.md5" | xargs md5sum -c >> result.txt
3. 關于郵件發送:
```shell
#!bin/bash
#desc show and mail#show
find /tmp -name "conf-*.tar.gz" | xargs ls -lhd | awk -F'[ /]+' 'BEGIN{print "IP FILE Size"}{print $(NF-1),$NF,$5}' | column -t > result.txt#mail
mail -s "Backup Result Today" xxxx@qq.com < result.txt
具體
如何配置郵件發送
請見我之前的筆記:
如何在openEuler22.03配置mail.rc給郵箱發郵件