软件吧
登录注册账号
/posts/grep
电脑必备

解压日志包时顺序错了, grep 结果白跑一晚上

码农小张 72 0 13

昨晚排查线上问题,从服务器拉了 12 个日志压缩包下来,每个 300MB 左右,文件名都是 app-20240612-1.log.gz 这种按小时切的。本来想直接解压到同一个目录然后 grep 关键字,结果出了大问题。

先说现象:我把 12 个包一股脑解压到 D:\logs\ 下,文件名几乎一样,只是时间戳不同,解压工具默认同名覆盖,最后目录里只剩最后一个包的内容。grep 跑了一晚上,结果全是错的。

后来复盘,问题出在两个地方:

  1. 解压顺序和覆盖策略。WinRAR、7-Zip、Win解压缩我都试了,默认都是同名覆盖。Win解压缩解压速度确实快,12 个包加起来不到 40 秒,但覆盖策略没得选,7-Zip 虽然慢一点,但可以用 -o 指定不同输出目录,或者加 -aou 自动重命名。命令行场景我还是倾向 7-Zip。
  1. 临时目录位置。解压 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 看一眼文件数,对不上就重来。

教训是:批量解压日志包,别图快直接丢同一个目录,覆盖是静默的,不报错。你们平时批量解压日志包,是按时间戳分目录还是靠工具自动重命名?有没有更稳的批量脚本推荐?

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。