pigz简介
1
pigz是一个高效的压缩工具,可以将多核CPU的每一分剩余性能都用来做压缩计算.而传统的gzip则只能用单核CPU.比如一台2个8core cpu服务器采用pigz和gzip压缩相同的数据,一般性能差距至少在7-8倍以上(一般不会达到理论的16倍,因为受限于磁盘的读写速度和内存等资源)
pigz 安装
1
[root@localhost ~]# yum -y install pigz
pigz 使用
1
2
3
4
5
6
7
8
9
10
11//压缩
tar cvf - {dir_name} | pigz -9 -p 24 > file.tgz
说明:
-9 表示压缩比,数值越大压缩率越大
-p 表示指定cpu的核数
//解压
pigz -d file.tgz
tar -xf --format=posix filepigz 扩展
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16之前,跨主机拷贝大数据时,通常做法如下:
* 在源端打包压缩为tar.gz文件
* 采用scp或者rsync等方式拷贝到目标主机
* 在目标主机解压文件
这三个过程是同步阻塞,即不能同时异步执行,导致效率低下
现在,我们将过程优化为以数据流的方式,同时执行(非阻塞模式),则效率一般可以提高到原来的3倍以上,具体实现如下:
磁盘读取-->打包(tar)-->压缩(gzip)-->传输(ssh)-->解压缩(gzip)-->拆包(tar)-->落盘
比如,我要将本地的test目录拷贝到"目标IP"的的data目录,则命令如下:
tar -c test/ |gzip |ssh -c arc 目标IP "gzip -d|tar -xC /data"
如果不需要解压,则命令变为:
tar -c test/ |pigz |ssh -c arc 目标IP "cat >/data/test.tar.gz"
注意: 因为采用了流式压缩,解压过程必须加上-i参数,及tar –ixf /data/test.tar.gz