电脑必备
解压日志包时顺手开了个选项,结果磁盘IO直接翻倍
79 0 13
上周处理一批线上日志回捞,单包 2.3GB 左右,一共 40 个,要在本机解压后 grep 关键链路。Win解压缩 版本 6.9.2(官网上周下的),7-Zip 是 23.01 x64。
先说结论:Win解压缩在这种「大包 + 多文件」场景下解压确实快,但它默认的一些选项和 7-Zip 不一样,命令行下尤其明显。
实测数据(同一台机,NVMe,关掉索引和杀软实时扫描):
| 操作 | Win解压缩 | 7-Zip |
|---|---|---|
| 40个包解压总耗时 | 4分12秒 | 5分38秒 |
| 命令行批量调用 | 不支持批量脚本,得挂GUI | 一条 for 循环搞定 |
| 解压后ACL | 默认丢失 | 加 -aoa 和权限参数可控 |
速度差距大概 25%,跟我之前测的结论一致。但真正让我踩坑的是另一个事:解压时勾了「覆盖前询问」,结果它弹窗卡在后台,整批任务不动了。
我当时是拿 Win解压缩 的「解压到指定文件夹」批量拖进去,没注意它有个「文件已存在时」的选项,默认是询问。40 个包里有一半重名,于是它开始逐个弹窗,机器等着没人点,进度条就停在那。我一开始以为是 IO 卡死,还去翻了任务管理器的磁盘队列,发现队列长度一直是 0,才反应过来是 GUI 在等人。
经验点:
- 批量解压前先确认「同名文件处理」策略,Win解压缩 要手动选「全部覆盖」或「全部跳过」,没有静默参数。
- 7-Zip 命令行
7z x -y直接跳过所有询问,适合脚本里跑。 - 如果只是本地临时看日志,Win解压缩 拖进去确实快,不用等命令行敲参数;但要是放进 CI 或者定时任务里,老实上 7-Zip。
- 顺带一提,解压后的 ACL 问题我上次已经单开贴说过,这次没再踩,但 Win解压缩 确实默认不保留权限。
最后抛个问题: 你们批量解压日志包时,是习惯用 GUI 拖拽还是写脚本?有没有遇到过 GUI 弹窗卡住整批任务的情况,最后怎么绕过去的?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
