目录
定时备份与清理服务
环境
- 操作系统: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
配置文件,内容如下:
# 全局配置
uid = root
gid = root
use chroot = no
max connections = 4
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
# 模块配置
[backup]
path = /backup
comment = Backup Directory
read only = no
list = yes
auth users = backupuser
secrets file = /etc/rsyncd.secrets
创建用户认证文件 /etc/rsyncd.secrets
,内容如下:
backupuser:password
设置文件权限:
chmod 600 /etc/rsyncd.secrets
启动 rsyncd
服务:
systemctl enable rsyncd
systemctl start rsyncd
2. 在 nfs01 和 web01 上配置备份脚本
脚本:backup_configs.sh
在每台服务器上创建脚本 /usr/local/bin/backup_configs.sh
,内容如下:
#!/bin/bash
# 获取当前时间
TIMESTAMP=$(date +%Y%m%d%H%M%S)
# 本地配置文件目录
CONFIG_DIR="/etc"
BACKUP_DIR="/backup/$(hostname -I | awk '{print $1}')"
BACKUP_FILE="conf-$TIMESTAMP.tar.gz"
# 打包配置文件
tar -czf /tmp/$BACKUP_FILE -C / $CONFIG_DIR
# 使用rsync传输备份文件到备份服务器
rsync -avz --password-file=/etc/rsync.pass /tmp/$BACKUP_FILE 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
,内容如下:
password
设置文件权限:
chmod 600 /etc/rsync.pass
设置脚本权限:
chmod +x /usr/local/bin/backup_configs.sh
3. 配置定时任务
使用 crontab
添加定时任务,每天凌晨2点执行备份脚本:
crontab -e
添加以下内容:
0 2 * * * /usr/local/bin/backup_configs.sh
4. 在 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 {} \;
# 记录日志
echo "Cleanup completed at $(date +%Y%m%d%H%M%S)" >> /var/log/cleanup_backups.log
设置脚本权限:
chmod +x /usr/local/bin/cleanup_backups.sh
5. 配置定时任务
使用 crontab
添加定时任务,每天凌晨3点执行清理脚本:
crontab -e
添加以下内容:
0 3 * * * /usr/local/bin/cleanup_backups.sh
6. 发送备份状态邮件
请见我之前的笔记如何在openEuler22.03配置mail.rc给邮箱发邮件