电脑必备
服务器上批量解压日志包,我对比了Win解压缩和7-Zip的命令行写法,发现个效率拐点
85 0 13
昨天运维扔过来一个目录,里面 300 多个日志压缩包(每个 200MB 左右),要全部解压出来按日期归档。我第一反应是写个 for 循环调命令行,结果在选工具上多花了半小时,记录一下。
先说结论:
- Win解压缩 GUI 解单个包确实快,我拿一个 200MB 的 zip 测,右键解压到当前文件夹,耗时 3.2 秒,7-Zip 是 3.8 秒。
- 但批量场景要循环调用,Win解压缩的命令行参数文档几乎是空的,我翻官网只找到一个
/x参数,没有-o指定输出目录这种基本能力。 - 7-Zip 的
7z x -o<dir> -y直接一条命令搞定所有包,还能配合-r递归。
实测数据:
- 机器配置:Win11 22H2,i7-12700,32G 内存,NVMe 固态。
- 300 个包,用 7-Zip 命令行写 powershell 循环,总耗时 14 分 20 秒,平均每个 2.9 秒。
- 手动用 Win解压缩一个个点,我试了 10 个就放弃了,平均每个 4.5 秒(含右键菜单弹窗和选路径的时间),300 个算下来要 22 分钟以上,还不算点错的风险。
踩坑细节:
- Win解压缩装完后会接管右键菜单,导致在某些自动化脚本里调用
Compress-Archive时,系统会弹窗询问用哪个程序打开,脚本直接卡住。我是在一台测试机上发现的,赶紧把右键菜单关了。 - 7-Zip 的
x命令默认保留目录结构,但解压日志包时我其实想要的是把里面的 .log 文件全部平铺到一个目录。得加-spf参数或者解压后再 find 一下。这个 Win解压缩 GUI 里有个“解压到当前文件夹”的选项,反而更直观。 - 权限问题:带 ACL 的包,7-Zip 命令行默认不保留权限,得加
-pt或者手动设,这个我之前在社区里提过一嘴,Win解压缩 GUI 里倒是有个勾选框。
我的用法:
- 日常单个包、临时看一眼:Win解压缩,双击就开,速度快。
- 批量、脚本、需要指定输出路径:7-Zip,命令行稳定,参数记熟了效率翻倍。
- 公司统一部署的话,我建议两个都装,不冲突,但要把 Win解压缩 的右键菜单收敛一下,不然脚本里容易出幺蛾子。
最后问一句:你们批量解压日志包的时候,是用 for 循环还是直接上 7z x -r 一把梭?有没有人试过用 WinRAR 的命令行做同样的事,速度能差多少?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
