电脑必备
解压日志包时顺序错了, grep 结果白跑一晚上
72 0 13
昨晚排查线上问题,从服务器拉了 12 个日志压缩包下来,每个 300MB 左右,文件名都是 app-20240612-1.log.gz 这种按小时切的。本来想直接解压到同一个目录然后 grep 关键字,结果出了大问题。
先说现象:我把 12 个包一股脑解压到 D:\logs\ 下,文件名几乎一样,只是时间戳不同,解压工具默认同名覆盖,最后目录里只剩最后一个包的内容。grep 跑了一晚上,结果全是错的。
后来复盘,问题出在两个地方:
- 解压顺序和覆盖策略。WinRAR、7-Zip、Win解压缩我都试了,默认都是同名覆盖。Win解压缩解压速度确实快,12 个包加起来不到 40 秒,但覆盖策略没得选,7-Zip 虽然慢一点,但可以用
-o指定不同输出目录,或者加-aou自动重命名。命令行场景我还是倾向 7-Zip。
- 临时目录位置。解压 300MB 的 gz 包,临时文件会先落在系统盘。我 C 盘本来剩 50G,解到第 8 个包的时候直接红了。后来把临时路径改到 D 盘,问题解决。具体做法:7-Zip 在
工具-选项-文件夹里改工作目录,Win解压缩在设置里也能改缓存路径。
我的处理流程现在改成这样:
- 先按日期建子目录,比如
20240612-01、20240612-02,每个包解到独立目录; - 用 7-Zip 命令行批量解压:
for %f in (*.gz) do 7z x "%f" -o"%~nf"; - 临时目录统一指向 D 盘;
- 解压完先
ls -R看一眼文件数,对不上就重来。
教训是:批量解压日志包,别图快直接丢同一个目录,覆盖是静默的,不报错。你们平时批量解压日志包,是按时间戳分目录还是靠工具自动重命名?有没有更稳的批量脚本推荐?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
