首页/数据/备份与容灾速查/增量备份 incremental backup

增量备份 incremental backup

只备份自上一次备份(上一次全量或上一次增量)以来发生变化的数据,空间与耗时开销小,恢复时必须依赖完整的备份链。

备份与容灾速查数据更新于 2026-10-13

增量备份是什么

增量备份只记录自上一次备份(可能是上一次全量,也可能是上一次增量)以来发生变化的数据,因此单次体积小、耗时短,适合数据量大而备份窗口紧张的场景。代价是恢复必须依赖完整链条:先还原基线全量,再按时间顺序依次应用每一份增量,中间任何一段缺失或损坏都会阻断恢复。

基本信息

备份依据上一次备份以来的变化数据
单次开销与变化量相关,日常较小且平稳
恢复依赖全量基线加全部增量,顺序不可乱
主要风险链上任一环节损坏或缺失都会影响其后恢复
生命周期需要明确的全量锚点保留规则

增量与差异的差别

对比项增量备份差异备份
备份依据上一次任意备份上一次全量备份
恢复依赖全量加全部增量全量加最近一份差异
每日耗时较小且平稳逐日增长
链条风险高,环环相扣低,只依赖全量

GNU tar 增量归档

GNU tar 增量归档
# 快照文件记录上次归档状态,首次运行相当于全量
tar --listed-incremental=/backup/snap.file -czf /backup/inc-$(date +%F).tar.gz /data
# 重新开启链条:显式做一次 level 0
tar --listed-incremental=/backup/snap.file --level=0 -czf /backup/full-$(date +%F).tar.gz /data

恢复顺序

恢复顺序
# 1) 先解包全量
tar -xzf /backup/full-2026-10-01.tar.gz -C /data
# 2) 再按时间顺序依次解包增量
tar -xzf /backup/inc-2026-10-02.tar.gz -C /data
tar -xzf /backup/inc-2026-10-03.tar.gz -C /data

典型使用场景

  • 备份窗口紧张:数据量大而低峰时段短,日常只传变化量才能跑完
  • 异地传输成本敏感:跨地域链路的每日流量只按变化量计,费用与耗时都可控
  • 虚拟机与镜像:块级增量只传变化的数据块,效果优于文件级比对
  • 数据库日志:日志归档本身就是一种持续增量,配合基础备份实现时间点恢复
  • 频繁保护点:需要每天多个恢复点时,用增量补足两次全量之间的空缺

链条管理是核心难点

增量备份的可靠性完全取决于链条完整:全量锚点不能被过早清理,中间任何一份副本损坏都会让之后的恢复点一并失效。专业备份软件会自动维护链条生命周期,自研脚本则必须自己实现『新全量成功后才清理旧链条』的顺序,并把链条完整性纳入监控。

常见误解

  • 以为恢复快:增量恢复比全量慢,链条越长越慢,长链可能反而超出恢复目标
  • 以为可以跳过中间副本:增量记录的是相对变化,跳过一段就得不到正确状态
  • 以为不同工具可以混用:mtime 对比、块级位图、日志序列三种语义互不兼容
  • 以为全量可以随时清理:锚点被删后,依赖它的所有增量都成为废数据
  • 以为日常增量成功就安全:链路末端成功不代表链条起点仍完好
增量链条要有明确的生命周期管理:全量锚点不能被过早清理,清理脚本必须先确认没有任何恢复点仍依赖它。
缩短链条的常用做法是定期合成全量或做一次真全量:链条越短,恢复越快,断链影响面也越小。
块级增量(虚拟机位图、存储快照差异)与文件级增量的失效粒度不同:前者以数据块为单位,后者以文件为单位,混用时恢复结果不可预期。

易错点

  • 不同工具的『增量』语义不同(mtime 对比、块级位图、日志序列),混合使用会得到错误结果
  • 恢复时跳过任一中间增量、或顺序错乱,都会得到错误的数据状态
  • 清理旧副本只按时间判断,未检查依赖关系,导致其余恢复点一并失效
  • 链条从不做完整试恢复:断链往往要到真实故障当天才被发现
  • 增量任务失败后静默跳过,当天的变化既没备份也没告警,恢复点出现空洞

数据来源与参考

  • GNU tar 手册(--listed-incremental 与增量恢复说明)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌