tar 增量归档

GNU tar 通过 --listed-incremental 快照文件记录目录状态实现文件级增量归档;用 --level=0 显式做一次新全量以重开链条。

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

tar 增量归档是什么

tar 通过一个快照文件记录上次归档时的目录状态,从而只把发生变化的内容写入新的归档,实现文件级增量。快照文件是这套机制的枢纽:它记录了上次的目录与文件信息,下一次运行时据此判断哪些文件是新增、修改或被删除。

基本信息

核心参数指定快照文件以实现增量归档
重新开链显式指定层级 0 生成新的全量锚点
快照文件记录上次归档状态,必须与归档一起保存
恢复顺序全量在前,增量按时间顺序依次解包

增量与重开链条

增量与重开链条
SNAP=/backup/tar.snap
# 首次运行相当于全量
tar --listed-incremental=$SNAP -czf /backup/full-$(date +%F).tar.gz -C /srv app
# 之后每次运行只归档变化
tar --listed-incremental=$SNAP -czf /backup/inc-$(date +%F).tar.gz -C /srv app
# 重开链条:显式做一次层级 0
tar --listed-incremental=$SNAP --level=0 -czf /backup/full-new-$(date +%F).tar.gz -C /srv app

快照文件要点

要点说明
一份数据集一个快照不同目录混用同一个快照文件会误判变化
随归档保存快照丢失后无法继续增量,只能重开链条
不可跨主机复用设备与索引信息不一致会导致判断错误
恢复需配合按序还原可正确处理增量中记录的删除标记

使用要点

  • 恢复时必须带同样的增量参数按顺序解包,否则删除标记可能被忽略
  • 快照文件纳入备份范围:它丢失意味着整条增量链无法继续
  • 跨主机的同一份快照文件不能复用:设备与索引记录不一致会误判变化
  • 定期重开链条:链条过长会让恢复变慢,也增加断链风险
  • 每次归档后记录条目数与体积,异常偏小时及时排查
快照文件丢失或与其他任务混用会导致增量链条错乱;一个数据集一份快照文件,并把它一并纳入备份范围。

与块级增量的差别

  • 粒度不同:文件级以整文件为单位,块级只传变化的数据块
  • 效率不同:大文件中只有少量变化时,块级增量的效果更好
  • 依赖不同:文件级依赖快照文件记录状态,块级依赖位图或存储层差异
  • 混用风险高:两种语义不能互相替代,同一数据集只选一种

易错点

  • 恢复时未按序配合增量参数还原,增量中记录的删除标记会被忽略
  • 跨主机的同一份快照文件不能复用:设备与索引记录不一致会误判变化
  • 快照文件未纳入备份,一旦丢失只能重开链条,历史增量失去参照
  • 链条长期不重开,恢复时需要依次解包大量归档,耗时远超预期

数据来源与参考

  • GNU tar 手册(--listed-incremental、--level)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌