备份脚本先写 /tmp 再打包,某天开始每天都是空包,/tmp 下的中间文件莫名消失,systemd-tmpfiles 日志里能看到清理记录。乍看像缓存或者权限的锅,追下去往往不是。

install -d -m 700 /var/backup/tmp
TMPDIR=/var/backup/tmp /opt/backup.sh

追下去是这么回事:/tmp 默认有定期清理策略,超过三天的文件会被删。备份脚本把中间产物放在那里,跑得慢一点就正好被清掉。

「备份临时目录清理」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。

线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。

具体做法是,中间文件改到专用的备份目录 别用 /tmp;确实要用临时目录 在脚本里显式创建并在结束时清理;确认 tmpfiles 的清理周期 别和备份窗口重叠。

验收就看一点,备份产物大小正常,/tmp 清理日志里不再出现备份相关文件。

作者 9823189