Linux(openEuler22.03) 定时备份任务 解决方案

12 篇文章 0 订阅
6 篇文章 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
  1. 创建或编辑 /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 = /backup
    comment = Backup Directory
    read only = no
    list = yes
    auth users = backupuser
    secrets file = /etc/rsyncd.secrets
  1. 创建用户认证文件 /etc/rsyncd.secrets,内容如下:
cat /etc/rsyncd.secrets
 backupuser:password
  1. 设置文件权限:
useradd -s /sbin/nologin -M rsync
mkdir -p /backup
chown -R rsync.rsync /backup

chmod 600 /etc/rsyncd.secrets
  1. 启动 rsyncd 服务:
systemctl enable rsyncd --now
systemctl restart rsyncd

2. 在 nfs01 和 web01 上配置备份脚本

脚本:backup_configs.sh
  1. 在每台需要备份的服务器(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
  1. 创建 rsync 密码文件 /etc/rsync.pass,内容如下:
cat /etc/rsync.pass
 password

chmod 600 /etc/rsync.pass

  1. 设置脚本权限:
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
  1. 创建脚本 /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
  1. 设置脚本权限:
chmod +x /usr/local/bin/cleanup_backups.sh
配置定时任务

使用 crontab 添加定时任务,每天凌晨3点执行清理脚本:

crontab -e

添加以下内容:

0 3 * * * /usr/local/bin/cleanup_backups.sh

4. 在backup服务器查看备份文件信息并发送备份状态邮件

  1. 关于查看信息:
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           12M

2. 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给邮箱发邮件

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值