软件吧
登录注册账号
/posts/7z-mw8drvm5-569a
电脑必备

7z批量压日志,我把字典大小和线程数拆开测,发现默认参数挺够用的

码农小张 15 0 10

上周清服务器日志,攒了 40 多个 G,分属 12 个应用,每个应用按天切,一个压缩包对应一天的日志。我平时拿 7z 命令行批量压,之前一直用 -mx=9 一把梭,这回闲下来想看看参数到底有没有调的必要,就拆开测了一轮。

机器是 Win10 22H2,7-Zip 24.09 x64,16G 内存,R7 5800X。样本挑了个 1.8G 的日志目录,里面大约 2000 个小文件,平均单文件不到 1M。

测的组合:

  • -mx=5 默认字典
  • -mx=9 默认字典
  • -mx=9 -md=256m
  • -mx=9 -md=256m -mmt=16
  • -mx=9 -md=1g

结果(压缩后体积 / 耗时):

参数体积耗时
mx=5412M2分11秒
mx=9401M4分38秒
mx=9 md=256m398M5分02秒
mx=9 md=256m mmt=16398M3分47秒
mx=9 md=1g397M6分15秒

看完这组数,结论挺直接的:字典从默认拉到 256M,体积只少了 3M,多花半分钟;拉到 1G 更亏。 真正有用的是 -mmt,多线程一开,耗时直接砍掉四分之一。

所以我现在批量压日志的固定参数就两条:-mx=9 -mmt=16,字典不动。日志这种文本,重复模式集中在前几 M,字典再大也压不出多少。

还有个坑得提一句:日志目录里有几个软链接,7z 默认不跟,得加 -snl 才会存成链接。我第一次压完解压回来发现少了好几个文件,查了半天才想起来这茬。另外文件名编码,跨机器解压时加 -mcu=on 能省不少乱码麻烦。

顺便说下,批量脚本里我用 -t7z -r 递归,配合 forfiles 按天分卷。有回没加 -y,跑到一半卡在覆盖确认上,半夜告警才发现。

想问下各位:你们压日志会特意调字典大小吗?还是也跟我一样发现默认就够,省下来的时间拿去调别的了?

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

社区回应

0 Replies

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

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