使用 pigz 并行加速 Linux 压缩与解压
Linux下压缩或解压一个文件,通常使用tar.gz
格式,对应的工具为 tar
(打包工具)以及由-z
参数指定的gzip
(压缩解压工具)。
而默认的gzip
工具是单线程工作的,在处理大文件时非常慢。
可以通过-I
参数指定自定义的并行(多进程、多核)
压缩解压工具 pigz
来进行加速。
pigz
的官方自我介绍:
A parallel implementation of gzip for modern multi-processor, multi-core machines
使用方法
- 安装
pigz
工具包(yum 或 apt) - 将常规参数中的
-z
去掉,换上-I
1 | # 压缩 |
注意事项:
- 常规的
tar
方法中czvf
或xzvf
中前边的-
可省了,且fv
或vf
顺序可调整 - 此处因为要加入
-I
参数,不能省略-
,且vf
参数只能是f
在后(f
紧挨指定的压缩文件路径)
原理解析
tar 通常的用法为:
1 | # 压缩 |
我们来看一下tar --help
返回的帮助信息中这几个参数的含义:
-c, --create create a new archive -x, --extract, --get extract files from an archive -z, --gzip, --gunzip, --ungzip filter the archive through gzip -f, --file=ARCHIVE use archive file or device ARCHIVE -C, --directory=DIR change to directory DIR -v, --verbose verbosely list files processed
以及另外一个我们今天使用的参数:
-I, --use-compress-program=PROG filter through PROG (must accept -d)
通过以上信息,我们可以知道:
-z
的意思是使用 gzip 进行压缩或解压-I
可以自定义你使用的压缩解压工具
相关信息
网上也有其他一些方案,例如管道组合之类的,不太好记。这里推荐-I
参数的方法。
其他用法及对应的性能测试的效果,参考: