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

2

3

4# 压缩

tar -I pigz -cvf package.tar.gz /path/to/file_or_folder

# 解压 (中括号内为可选,用于指定解压缩目标地址)

tar -I pigz -xvf package.tar.gz [-C /path/to/extracted]

注意事项:

常规的tar方法中czvf或xzvf中前边的-可省了,且fv或vf顺序可调整

此处因为要加入-I参数,不能省略-,且vf参数只能是f在后(f紧挨指定的压缩文件路径)

原理解析

tar 通常的用法为:

1

2

3

4# 压缩

tar -czvf package.tar.gz /path/to/file_or_folder

# 解压 (中括号内为可选,用于指定解压缩目标地址)

tar -xzvf package.tar.gz [-C /path/to/extracted]

我们来看一下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参数的方法。

其他用法及对应的性能测试的效果,参考:

Logo

更多推荐