1.10.1 备份类型与策略选择(全量/增量/差异)

备份类型的选择需结合 RPO/RTO、数据变化率与备份窗口。全量备份适合基线与归档;增量备份效率高但恢复链长;差异备份恢复快但存储增长更快。建议以“全量+增量/差异”的组合为主,并设置链长度与保留策略上限,防止恢复链过长与存储膨胀。

原理草图(全量/增量/差异):

文章图片

策略选择建议:
- 全量+增量:每周全量、每日增量;适合变化率高、存储敏感。
- 全量+差异:每周全量、每日差异;适合恢复窗口短、追求恢复速度。
- 多级备份:月全量归档、周全量、日增量/差异;兼顾合规与效率。

示例前置:安装与准备数据(以 rsync/tar 为例)

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

# CentOS/RHEL
sudo yum install -y rsync tar

# 准备演示数据
mkdir -p /data/app /backup
echo "v1" > /data/app/config.ini
dd if=/dev/zero of=/data/app/db.dump bs=1M count=5

示例一:全量备份(tar)

# 全量备份:生成基线包
tar -czf /backup/full-$(date +%F).tar.gz -C /data app

# 查看包内容(验证)
tar -tzf /backup/full-$(date +%F).tar.gz | head
# 预期:看到 app/ 目录及其文件

示例二:增量备份(rsync + link-dest)

# 第一次全量镜像
rsync -a --delete /data/app/ /backup/full-0/

# 模拟变更
echo "v2" >> /data/app/config.ini
dd if=/dev/zero of=/data/app/log.bin bs=1M count=1

# 增量:以 full-0 为基线,生成 inc-1(硬链接未变更文件)
rsync -a --delete --link-dest=/backup/full-0 /data/app/ /backup/inc-1/

# 验证:对比文件 inode,未变更文件应为硬链接
ls -li /backup/full-0/config.ini /backup/inc-1/config.ini

示例三:差异备份(rsync 以“最后一次全量”为基线)

# 模拟再次变更
echo "v3" >> /data/app/config.ini
dd if=/dev/zero of=/data/app/log2.bin bs=1M count=1

# 差异:始终以 full-0 为基线生成 diff-2
rsync -a --delete --compare-dest=/backup/full-0 /data/app/ /backup/diff-2/

# 预期:diff-2 仅包含自 full-0 以来变化的文件
find /backup/diff-2 -type f

恢复说明(命令示例)

# 增量恢复:先还原 full-0,再叠加 inc-1
rsync -a /backup/full-0/ /restore/app/
rsync -a /backup/inc-1/ /restore/app/

# 差异恢复:full-0 + 最新差异
rsync -a /backup/full-0/ /restore/app/
rsync -a /backup/diff-2/ /restore/app/

排错与诊断要点:
- “恢复链断裂”:缺少某个增量目录 → 需要完整链或改用差异/更频繁全量。
- “恢复后文件旧”:检查 rsync 选项是否缺少 -a 或时间戳不一致。
- “存储爆满”:增量链过长或差异增长过快 → 增加全量频率、设置保留上限。
- “硬链接失效”:目标文件系统不支持硬链接 → 需改用真正的增量工具或分卷策略。

练习(建议写出命令并验证结果):
1. 设计“每周全量 + 每日增量”的 7 天备份方案,并给出目录命名规则。
2. 使用 rsync 创建 full-0、inc-1、inc-2,验证硬链接 inode 是否一致。
3. 将差异备份与增量备份分别恢复到 /restore,对比耗时与文件数量。