多线程压缩软件 - pigz
本文最后更新于 2023年4月8日 下午
前言
我日常使用一台 Ubuntu 系统的笔电办公、写代码,但有时遇到需要打包并压缩大文件夹的需求(比如把最近下载的几十篇论文资料压缩打包,以便备份),发现 Ubuntu 默认自带的压缩工具为单线程压缩,不能充分利用笔电的6核12线程处理器,速度非常慢。故寻找了一款强力好用的多线程压缩软件——pigz
在我的实验中,pigz 能在压缩率接近的情况下提速几十倍。是的,几十倍。
pigz简介
pigz是GZip的并行版(pigz,即 Parallel Implementation of GZip),作者为Mark Adler。
它充分利用了现代多核处理器的性能,大幅提高压缩解压的速度。
安装
对于Ubuntu:
1 |
|
Centos:
1 |
|
语法
1 |
|
实例
压缩单个文件
1 |
|
加上-k
选项保留原始文件,会在当前工作目录获得压缩后的your_file_name.gz
文件
这时候还可以用
1 |
|
来查看压缩文件后的压缩率
对应的单个文件解压命令则是
1 |
|
同样,如果需要保留.gz文件,记得加上-k
选项
压缩文件夹
pigz没有压缩文件夹的选项,只能压缩单个文件。若想压缩文件夹,可以结合tar
使用
1 |
|
解压文件夹
1 |
|
这样得到的是output.tar
,再通过tar解打包就好了
也可以直接用tar命令解压
1 |
|
常用参数
- -0 ~ -9 压缩等级,数字越大压缩率越高,速度越慢,默认为6
- -k --keep 压缩后不删除原始文件
- -l --list 列出压缩输入的内容
- -K --zip Compress to PKWare zip (.zip) single entry format
- -d --decompress 解压缩输入
- -p --processes n 使用n核处理,默认为使用所有CPU核心
实验(不具参考性)
做个不严谨的小实验,简单试一下pigz到底能有多快(数字看看就好,主要就瞎折腾图一乐)
实验结果(省流省时表格):
压缩方式 | 压缩耗时/s | 压缩率/% | 解压耗时/s |
---|---|---|---|
.tar.xz | 138 | 73.0 | 26 |
.7z | 136 | 73.1 | 17 |
pigz (压缩等级6) | < 2 | 79.6 | < 2 |
pigz (压缩等级9) | < 3 | 79.5 | < 3 |
(注意xz,gz,7z这些不同的压缩格式本身压缩率就不同,xz压缩率比gz高是肯定的)
结论:相比直接使用Ubuntu自带的右键压缩,pigz快得离谱
实验平台
OS: Ubuntu 20.04 focal
Kernel: x86_64 Linux 5.11.18-051118-generic
CPU: AMD Ryzen 5 5500U @ 12x 2.1GHz
RAM: 16GB
power: 全程插电
pigz version: 2.4
待压缩目录属性
home/muzing/文档/论文
这个目录共有116项,原始大小约411.2MB
默认压缩(.tar.xz)
使用Ubuntu自带的压缩工具(文件夹上右键压缩)压缩:
观察CPU负载可以看到是在用单线程进行压缩,每一时刻都只有一个核心的占用率很高
- 耗时:138 s
- 压缩后文件大小: 300.2 MB
- 压缩率:73.0%
- 解压耗时:26 s
默认压缩(.7z)
类似的,还测试了使用右键压缩为7z格式的时间和压缩率
CPU负载情况和.tar.xz的十分类似,也是只有一个核心在满负载且频繁变化,就不截图了。
- 压缩耗时:136 s
- 压缩后文件大小:300.7 MB
- 压缩率:73.1%
- 解压耗时:17 s
pigz压缩
下面是重头戏,请扶好、坐稳、托腮(以防下巴掉下来)
先试一下默认压缩等级-6
1 |
|
在按下Enter键后,啪的一下,很快啊,这个命令就已经执行完了……
一瞬间……
执行完了……
- 压缩等级:6
- 压缩耗时:1.5 s
- 压缩后文件大小:327.2 MB
- 压缩率:79.6%
- 解压耗时:2 s
虽然速度已经起飞了,但压缩率跟前面的.7z .tar.xz比还差一些,试试看使用大压缩等级
- 压缩等级:9
- 压缩耗时:2 s
- 压缩后文件大小:327.1 MB
- 压缩率:79.5%
- 解压耗时:2.5 s
好吧,并没有看到明显的效果。不过80%这个压缩率也可以接受了。
总结
pigz真的是非常强力的工具,如果你的使用场景和我相同:在桌面Linux系统下打包压缩大文件,那一定要尝试一下。但如果是在多核服务器上使用,最好使用-p参数限制一下参与压缩的核心数量,避免所有核心同时高负载对其他服务产生严重影响。
集成到右键菜单
如果能把“使用pigz压缩”添加到文件管理器右键菜单,那就更加方便了。
可以安装 Nautilus-actions 来实现添加自定义右键菜单
1 |
|
(未完待续……)