openEuler22.03 定时备份任务需求解决方案

发布于:2024-05-17 ⋅ 阅读:(224) ⋅ 点赞:(0)

定时备份与清理服务

环境

  • 操作系统:openEuler 22.03
  • 备份服务器:backup
  • 需要备份的服务器:nfs01, web01
  • 备份目录:/backup/

需求概述

  1. 定时备份 nfs01web01 的配置文件(/etc)到 backup 服务器,备份文件格式为 /backup/<ip地址>/conf-<时间>.tar.gz
  2. 定时同步 nfs01web01 的备份到 backup 服务器的 /backup/ 目录。
  3. 定时删除 nfs01web01 7天之前的备份。
  4. 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给邮箱发邮件