pigz | Linux多线程压缩软件

pigz充分利用了现代多核CPU的性能,大幅提高压缩解压的速度。
在我的测试中,pigz比Ubuntu默认的压缩方式快了几十倍。

前言

我日常使用一台Ubuntu系统的笔电办公、写代码,但有时遇到需要打包并压缩大文件夹的需求(比如把最近下载的几十篇论文资料压缩打包,以便备份),发现Ubuntu默认自带的压缩工具为单线程压缩,不能充分利用笔电的6核12线程处理器,速度非常慢。故寻找了一款强力好用的多线程压缩软件——pigz

一、pigz简介

pigz是GZip的并行版(pigz,即 Parallel Implementation of GZip),作者为Mark Adler。

它充分利用了现代多核处理器的性能,大幅提高压缩解压的速度。

二、安装

对于Ubuntu:

sudo apt install pigz

Centos:

sudo yum -y install pigz

三、语法

pigz [ -cdfhikKlLmMnNqrRtz0..9,11 ] [ -b blocksize ] [ -p threads ] [ -S suffix ] [ name ...  ]
unpigz [ -cfhikKlLmMnNqrRtz ] [ -b blocksize ] [ -p threads ] [ -S suffix ] [ name ...  ]

四、实例

1. 压缩单个文件

pigz -k your_file_name

加上-k选项保留原始文件,会在当前工作目录获得压缩后的your_file_name.gz 文件

这时候还可以用

pigz -l your_file_name.gz

来查看压缩文件后的压缩率

对应的单个文件解压命令则是

unpigz -d your_file_name.gz

同样,如果需要保留.gz文件,记得加上-k选项

2. 压缩文件夹

pigz没有压缩文件夹的选项,只能压缩单个文件。若想压缩文件夹,可以结合tar使用:

tar -cvf - dir1 dir2 dir3 | pigz > output.tar.gz

3. 解压文件夹

pigz -d output.tar.gz

这样得到的是output.tar,再通过tar解打包就好了

也可以直接用tar命令解压

tar -xzvf output.tar.gz

五、常用参数

  • -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到底能有多快(数字看看就好,主要就瞎折腾图一乐)

实验结果(省流省时表格):

(注意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自带的压缩工具(文件夹上右键压缩)压缩:

开始压缩后30s的CPU负载
开始压缩后90s的CPU负载

观察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

tar -cvf - 论文/ | pigz -6 > 论文.tgz
在终端中输入pigz命令

在按下Enter键后,啪的一下,很快啊,这个命令就已经执行完了……

一瞬间……

执行完了……

pigz压缩时的CPU负载,12个核心负载全部升高
  • 压缩等级: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 来实现添加自定义右键菜单

sudo apt-get install nautilus-actions

转自:https://zhuanlan.zhihu.com/p/389817246

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容