19.9.1 备份策略设计与分级(全量/增量/差异)

备份策略设计与分级(全量/增量/差异)#

备份策略设计围绕业务 RPO/RTO、数据规模、备份窗口与恢复复杂度展开,通过全量/增量/差异分级组合在成本与恢复速度之间取得平衡。全量备份提供完整基线;增量备份仅保存自上次备份以来变化数据;差异备份保存自上次全量以来的变化,恢复链路更短。

文章图片

分级策略建议#

  • 关键业务:每日全量或全量+小时级增量,最短恢复链路。
  • 重要业务:每周全量+每日差异或增量,兼顾成本与恢复。
  • 一般业务:每月全量+周差异,降低存储占用。

安装与准备(以 rsync/tar 为例)#

# Ubuntu/Debian
apt-get update
apt-get install -y rsync tar cron

# CentOS/RHEL
yum install -y rsync tar cronie

# 备份目录规划
mkdir -p /data/backup/{full,incr,diff,meta,restore}

示例一:使用 tar 快照实现全量/增量/差异#

适用于文件型数据(配置、日志、静态文件等)

# 1) 全量备份(生成基线快照)
tar -g /data/backup/meta/backup.snar \
    -czf /data/backup/full/full_$(date +%F).tar.gz \
    /etc /var/www

# 2) 增量备份(基于快照,仅保存新增/变更)
tar -g /data/backup/meta/backup.snar \
    -czf /data/backup/incr/incr_$(date +%F_%H).tar.gz \
    /etc /var/www

# 3) 差异备份(每次从“全量快照”开始)
cp /data/backup/meta/backup.snar /data/backup/meta/full_base.snar

# 执行差异备份时,先使用全量快照副本
tar -g /data/backup/meta/full_base.snar \
    -czf /data/backup/diff/diff_$(date +%F).tar.gz \
    /etc /var/www

关键参数解释
- -g:增量快照文件(记录文件时间与状态)
- -czf:压缩为 gzip 格式
- backup.snar:增量链使用同一个快照文件
- full_base.snar:差异备份每次从“全量快照”开始

预期效果
- /data/backup/full/ 保存全量基线
- /data/backup/incr/ 保存多次增量
- /data/backup/diff/ 保存差异链


示例二:使用 rsync --link-dest 做“差异/增量”快照#

利用硬链接减少重复数据,适合大规模目录

# 1) 全量快照
rsync -a --delete /data/app/ /data/backup/full/snap_2024-01-01/

# 2) 增量快照(基于上一次快照)
rsync -a --delete --link-dest=/data/backup/full/snap_2024-01-01 \
  /data/app/ /data/backup/incr/snap_2024-01-02/

# 3) 差异快照(总是指向全量)
rsync -a --delete --link-dest=/data/backup/full/snap_2024-01-01 \
  /data/app/ /data/backup/diff/snap_2024-01-03/

关键参数解释
- --link-dest:未变化文件硬链接到基线目录
- --delete:删除目标中多余文件以保持一致
- -a:保留权限、时间与符号链接


恢复演练(验证“可备可恢”)#

# 全量恢复
tar -xzf /data/backup/full/full_2024-01-01.tar.gz -C /data/backup/restore

# 增量恢复(按时间顺序依次解压)
tar -xzf /data/backup/incr/incr_2024-01-01_01.tar.gz -C /data/backup/restore
tar -xzf /data/backup/incr/incr_2024-01-01_02.tar.gz -C /data/backup/restore

# 差异恢复(仅需全量+最近差异)
tar -xzf /data/backup/diff/diff_2024-01-02.tar.gz -C /data/backup/restore

排错与常见问题#

  1. 增量链过长恢复慢
# 解决:周期性重新全量
# 建议每周/每月重新全量,缩短链路
  1. tar 增量未生效(所有文件都被备份)
# 检查是否误删快照文件
ls -l /data/backup/meta/backup.snar
# 解决:保持同一个快照文件,避免被覆盖
  1. rsync 差异目录占用过大
# 检查是否忘记加 --link-dest
# 解决:确保 --link-dest 指向正确基线目录

练习#

  1. 设计一个“每周全量+每日差异”的策略,并用 cron 写出计划任务。
  2. 用 tar 快照备份 /etc,连续执行 3 次增量,进行一次恢复演练。
  3. 用 rsync 生成 3 个快照目录,比较真实占用(du -sh)。
# 示例:cron 每周全量,每日差异
# /etc/cron.d/backup
0 2 * * 0 root /usr/local/bin/backup_full.sh
0 2 * * 1-6 root /usr/local/bin/backup_diff.sh

以上内容可作为后续“备份介质、存储与保留策略”的衔接基础。