先看现象。CentOS 7.9 上用 tar 给网站目录做增量备份,脚本先 tar -g snap 打全量,之后每天跑同一条命令,恢复时发现周末上传的图片全缺,快照文件的时间戳还停在第一次。
排查方向其实有限,先把可能性排一排。-g 指定的快照文件每次运行都会被重写,增量链没有接上。也可能是第二天换了另一个 -g 文件,tar 认为又是一次全量,旧快照失效。
还有一种情况,脚本里 -g 和 -f 的顺序写错,快照目录被当成了归档文件。
另外,目录里有文件被改名,tar 按路径判断增量,改名等于新增。
上来先看快照文件里记了什么
tar -g /data/backup/snap -tf /data/backup/full.tgz | head -5 && ls -l /data/backup/snap
全量固定使用同一个快照
tar -g /data/backup/snap -czf /data/backup/full-$(date +%F).tgz /www/wwwroot
增量沿用同一个快照文件
tar -g /data/backup/snap -czf /data/backup/inc-$(date +%F).tgz /www/wwwroot
恢复后统计文件数量
for f in /data/backup/*.tgz; do echo -n "$f "; tar -tzf $f | wc -l; done
恢复的判定其实很直接。增量包只包含新增和变更的文件,按时间顺序解包后文件总数与源目录一致,缺的图片能找回。
tar 的快照是一个累积文件,删了它下一次就退化成全量;备份窗口内被改名的文件会当成新文件,恢复时务必按顺序解包。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
