内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
本文档详细介绍系统全量和增量备份策略的设计与实
风哥提示:
施,包括备份计划制定、备份脚本编写、恢复测试等。
Part01-备份策略设计
1.1 备份类型说明
# 1. 全量备份(Full Backup)
# – 备份所有数据
# – 恢复速度快
# – 占用空间大
# – 备份时间长
# 2. 增量备份(Incremental Backup)
# – 只备份变化的数据
# – 占用空间小
# – 备份时间短
# – 恢复速度慢
# 3. 差异备份(Differential Backup)
# – 备份自上次全量备份以来的所有变化
# – 介于全量和增量之间
# 备份策略组合
# 方案1:每周全量 + 每日增量
# – 周日:全量备份
# – 周一至周六:增量备份
# 方案2:每月全量 + 每周差异 + 每日增量
# – 每月1日:全量备份
# – 每周日:差异备份
# – 周一至周六:增量备份
Part02-全量备份实施
2.1 创建全量备份脚本
$ cat > /usr/local/bin/full_backup.sh << 'EOF' #!/bin/bash # 备份配置 BACKUP_DIR="/backup/full" SOURCE_DIRS="/etc /home /var/www /var/lib/mysql" DATE=$(date +%Y%m%d) LOG_FILE="/var/log/backup_full_${DATE}.log" # 创建备份目录 mkdir -p $BACKUP_DIR # 记录开始时间 echo "=== Full Backup Started at $(date) ===" | tee -a $LOG_FILE # 执行全量备份 for dir in $SOURCE_DIRS; do dirname=$(basename $dir) backup_file="${BACKUP_DIR}/${dirname}_full_${DATE}.tar.gz" echo "Backing up $dir to $backup_file" | tee -a $LOG_FILE tar -czvpf $backup_file $dir 2>&1 | tee -a $LOG_FILE
if [ $? -eq 0 ]; then
echo “Backup of $dir completed successfully” | tee -a $LOG_FILE
# 计算MD5校验值
md5sum $backup_file > ${backup_file}.md5
else
echo “Backup of $dir failed” | tee -a $LOG_FILE
fi
done
# 记录结束时间
echo “=== Full Backup Completed at $(date) ===” | tee -a $LOG_FILE
# 列出备份文件
echo “Backup files:” | tee -a $LOG_FILE
ls -lh $BACKUP_DIR/*_${DATE}.tar.gz | tee -a $LOG_FILE
# from PG视频:www.itpux.com清理旧备份(保留30天)
find $BACKUP_DIR -name “*.tar.gz” -mtime +30 -delete
find $BACKUP_DIR -name “*.md5” -mtime +30 -delete
EOF
# 赋予执行权限
$ chmod +x /usr/local/bin/full_backup.sh
# 执行全量备份
$ sudo /usr/local/bin/full_backup.sh
=== Full Backup Started at Thu Apr 3 15:20:00 CST 2026 ===
Backing up /etc to /backup/full/etc_full_20260403.tar.gz
/etc/
/etc/passwd
/etc/shadow
/etc/group
…
Backup of /etc completed successfully
Backing up /home to /backup/full/home_full_20260403.tar.gz
/home/
/home/user/
…
Backup of /home completed successfully
=== Full Backup Completed at Thu Apr 3 15:25:00 CST 2026 ===
Backup files:
-rw-r–r–. 1 root root 1.2M Apr 3 1学习交流加群风哥QQ1132571745:20:00 /backup/full/etc_full_20260403.tar.gz
-rw-r–r–. 1 root root 5.6M Apr 3 15:22:00 /backup/full/home_full_20260403.tar.gz
Part03-增量备份实施
3.1 创建增量备份脚本
$ cat > /usr/local/bin/incremental_backup.sh << 'EOF' #!/bin/bash # 备份配置 BACKUP_DIR="/backup/incremental" SOURCE_DIRS="/etc /home /var/www /var/lib/mysql" DATE=$(date +%Y%m%d) TIME=$(date +%H%M%S) LOG_FILE="/var/log/backup_incremental_${DATE}.log" # 创建备份目录 mkdir -p $BACKUP_DIR # 记录开始时间 echo "=== Incremental Backup Started at $(date) ===" | tee -a $LOG_FILE # 执行增量备份 for dir in $SOURCE_DIRS; do dirname=$(basename $dir) backup_file="${BACKUP_DIR}/${dirname}_incr_${DATE}_${TIME}.tar.gz" snapshot_file="${BACKUP_DIR}/.${dirname}.snapshot" echo "Backing up $dir to $backup_file" | tee -a $LOG_FILE # 使用rsync进行增量备份 rsync -av --delete \ --link-dest=${BACKUP_DIR}/${dirname}_latest \ $dir/ ${BACKUP_DIR}/${dirname}_${DATE}_${TIME}/ 2>&1 | tee -a $LOG_FILE
if [ $? -eq 0 ]; then
# 更新最新备份链接
rm -f ${BACKUP_DIR}/${dirname}_latest
ln -s ${BACKUP_DIR}/${dirname}_${DATE}_${TIME} ${BACKUP_DIR}/${dirname}_latest
echo “Backup of $dir completed successfully” | tee -a $LOG_FILE
else
echo “Backup of $dir failed” | tee -a $LOG_FILE
fi
done
# 记录结束时间
echo “=== Incremental Backup Completed at $(date) ===” | tee -a $LOG_FILE
# 清理旧备份(保留7天)
find $BACKUP_DIR -name “*_incr_*” -mtime +7 -exec rm -rf {} \;
EOF
# 赋予执行权限
$ chmod +x /usr/local/bin/incremental_backup.sh
# 执行增量备份
$ sudo /usr/local/bin/incremental_backup.sh
=== Incremental Backup Started at Thu Apr 3 15:30:00 CST 2026 ===
Backing up /etc to /backup/incremental/etc_incr_20260403_153000.tar.gz
sending incremental file list
./
passwd
shadow
…
sent 500.00K bytes received 10.00K更多学习教程公众号风哥教程itpux_com bytes 1,020.00K bytes/sec
total size is 1.20M speedup is 2.35
Backup of /etc completed successfully
=== Incremental Backup Completed at Thu Apr 3 15:30:30 CST 2026 ===
Part04-备份恢复测试
4.1 恢复全量备份
$ ls -lh /backup/full/
total 6.8M
-rw-r–r–. 1 root root 1.2M Apr 3 15:20:00 etc_full_20260403.tar.gz
-rw-r–r–. 1 root root 56 Apr 3 15:20:00 etc_full_20260403.tar.gz.md5
-rw-r–r–. 1 root root 5.6M Apr 3 15:22:00 home_full_20260403.tar.gz
-rw-r–r–. 1 root root 56 Apr 3 15:22:00 home_full_20260403.tar.gz.md5
# 验证备份文件完整性
$ cd /backup/full
$ md5sum -c etc_full_20260403.tar.gz.md5
etc_full_20260403.tar.gz: OK
# 恢复单个文件
$ tar -tzf etc_full_20260403.tar.gz | grep passwd
etc/passwd
etc/passwd-
# 恢复单个文件
$ tar -xzf etc_full_20260403.tar.gz etc/passwd -C /tmp/
# 验证恢复的文件
$ ls -l /tmp/etc/passwd
-rw-r–r–. 1 root root 2.3K Apr 3 15:20:00 /tmp/etc/passwd
# 恢复整个目录
$ tar -xzf etc_full_20260403.tar.gz -C /restore/
# 验证恢复的目录
$ ls -l /restore/etc/
total 1.2M
-rw-r–r–. 1 root root 56 Apr 3 15:20:00 passwd
-rw-r–r–. 1 root root 56 Apr 3 15:20:00 shadow
-rw-r–r–. 1 root root 56 Apr 3 15:20:00 group
Part05-定时备份配置
5.1 配置cron定时任务
$ sudo crontab -e
# 添加以下内容
# 每周日凌晨2点执行全量备份
0 2 * * 0 /usr/local/bin/full_backup.sh >> /var/log/backup_full.log 2>&1
# 每天凌晨3点执行增量备份
0 3 * * 1-6 /usr/local/bin/incremental_backup.sh >> /var/log/backup_incremental.log 2>&1
# 查看定时任务
$ sudo crontab -l
0 2 * * 0 /usr/local/bin/full_backup.sh >> /var/log/backup_full.log 2>&1
0 3 * * 1-6 /usr/local/bin/incremental_backup.sh >> /var/log/backup_incremental.log 2>&1
# 重启cron服务
$ sudo systemctl restart crond
# 验证cron服务状态
$ sudo systemctl status crond
● crond.service – Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; preset: enabled)
Active: active (running) since Thu 2026-04-03 15:35:00 CST; 5s ago
Main PID: 12345 (crond)
Tasks: 1 (limit: 49152)
Memory: 1.2M
CPU: 15ms
CGroup: /system.slice/crond.service
└─12345 /usr/sbin/crond -n
Apr 03 15:35:00 rhel10 systemd[1]: Started Command Scheduler.
1. 定期执行全量备份(每周或每月)
2. 每日执行增量备份
3. 备份文件异地存储
4. 定期验证备份文件完整性
5. 定期进行恢复演练
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
