快如闪电:Linux多线程压缩软件pigz

pigz充分利用了现代多核CPU的性能,大幅提高压缩解压的速度。

在我的测试中,pigz比Ubuntu默认的压缩方式快了几十倍

前言

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

pigz简介

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

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

pigz-logo

安装

对于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 ...  ]

实例

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

压缩命令

tar -cvf - dir1 dir2 dir3 | pigz -p 8 > output.tgz

解压命令

pigz -d output.tgz

如果是gzip格式,也支持用tar解压

tar -xzvf output.tgz

常用参数

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

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

压缩方式压缩耗时/s压缩率/%解压耗时/s
.tar.xz13873.026
.7z13673.117
pigz (压缩等级6)< 279.6< 2
pigz (压缩等级9)< 379.5< 3

结论: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负载

开始压缩后90秒的CPU负载

观察CPU负载可以看到是在用单线程进行压缩,每一时刻都只有一个核心的占用率很高

.tar.xz压缩包

  • 耗时:138 s
  • 压缩后文件大小: 300.2 MB
  • 压缩率:73.0%
  • 解压耗时:26 s

默认压缩(.7z)

类似的,还测试了使用右键压缩为7z格式的时间和压缩率

CPU负载情况和.tar.xz的十分类似,也是只有一个核心在满负载且频繁变化,就不截图了。

.7z压缩包

  • 压缩耗时:136 s
  • 压缩后文件大小:300.7 MB
  • 压缩率:73.1%
  • 解压耗时:17 s

pigz压缩

下面是重头戏,请扶好、坐稳、托腮(以防下巴掉下来)

先试一下默认压缩等级-6

tar -cvf - 论文/ | pigz -6 > 论文.tgz

pigz压缩命令

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

一瞬间……

执行完了……

执行输出

pigz压缩CPU负载

  • 压缩等级:6
  • 压缩耗时:1.5 s
  • 压缩后文件大小:327.2 MB
  • 压缩率:79.6%
  • 解压耗时:2 s

虽然速度已经起飞了,但压缩率跟前面的.7z .tar.xz比还差一些,试试看使用大压缩等级

pigz压缩包

  • 压缩等级:9
  • 压缩耗时:2 s
  • 压缩后文件大小:327.1 MB
  • 压缩率:79.5%
  • 解压耗时:2.5 s

好吧,并没有看到明显的效果。不过80%这个压缩率也可以接受了。

总结

pigz真的是非常强力的工具,如果你的使用场景和我相同:在桌面Linux系统下打包压缩大文件,那一定要尝试一下。但如果是在多核服务器上使用,最好使用-p参数限制一下参与压缩的核心数量,避免所有核心同时高负载对其他服务产生严重影响。

集成到右键菜单

如果能把“使用pigz压缩”添加到文件管理器右键菜单,那就更加方便了。

可以安装 Nautilus-actions 来实现添加自定义右键菜单

sudo apt-get install nautilus-actions

(未完待续……)

截止到本文最后更新,我还没有在Nautilus-actions里折腾出来正确的配置,可以到我的博客查看本文最新更新

文章链接:https://muzing.top/posts/1e171b08/

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值