电脑必备
部署包解压后文件时间全变,我拿两台机器对账才发现是保留了目录时间戳
78 1 13
前两天发版出岔子,我第一反应是代码有问题,结果查了半天是解压部署包时文件时间全被改了,排错方向从一开始就跑偏了。
现象
场景很普通:CI 打了个 tar.gz 部署包,我在测试机解压后跑启动脚本,日志里几个模块加载顺序不对。运维说看文件时间能判断哪个是新包,我一看,所有文件修改时间都是解压那一刻,跟实际编译顺序完全对不上。
排查步骤
- 先确认包本身没问题,拿
tar -tvzf直接看包内时间戳,编译时间都在,是解压工具改的; - 换命令行
tar xzf解压同一份包,时间戳保留正常; - 用 Win解压缩图形界面解压,时间全变成当前时间;
- 翻设置发现「保留目录时间戳」默认没勾,勾上再解压,时间回来了,但只对目录生效,文件时间还是当前时间。
我的判断
- 这不是 bug,是工具定位问题。图形界面的解压工具默认「不折腾」,普通用户确实不在乎文件时间;
- 但我们这种要看部署包新旧、对日志时间线、排加载顺序的,文件时间就是元数据,丢了等于信息缺一块;
- 结论很简单:日常双击解压日志包用 Win解压缩没问题,速度快;但凡要拿时间戳对账、或者脚本里有按时间判断的逻辑,命令行换 7-Zip 或原生 tar,别偷懒。
踩过的坑
上次解压日志包误开选项导致磁盘 IO 翻倍那事之后,我养成个习惯:新机器第一次装工具先跑一遍解压对账,看时间戳、权限、软链接三项是不是都保住了。这次就是靠这个习惯发现的,不然又得怀疑到代码头上。
另外提醒一句:如果启动脚本里真有按文件时间排序的逻辑,用图形工具解压可能直接改变执行顺序,这种环境问题最隐蔽,日志里根本看不出来。
你们平时解压部署包会专门检查文件时间戳吗?还是说只有我这种对时间线有强迫症的人才会盯这个?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
