gzip 是单线程压缩的,pigz 支持并行 gzip 。
简单说就是多线程的 gzip ,pigz CPU 占用比较高,可以根据需要指定逻辑处理器数量。
同时CPU消耗是gzip的好几倍,在对短时间内CPU消耗较高不受影响的场景下,可以使用pigz。
pbzip2作为多线程版本的bzip2工具
#centos & Redhat 系统安装 pigz
yum install -y pigz pbzip2
#ubuntu & debian 系统安装 pigz
apt install pigz pbzip2
# 压缩
tar -cvf - test/ | pigz -p 16 > test.tar.gz
---说明:
-使用标准输入/输出
-p 指定逻辑处理器数量,这里指定 16,默认是 8,可以根据实际情况改变
---常用参数:
-p n: 压缩时使用的核心数量,默认使用所有核心
-k: 压缩后保留源文件
-l: 查看压缩后文件的压缩率。
-6: 默认的压缩级别
-9: 压缩率最高,但是速度慢
-1: 压缩率最低,速度最快
# 压缩目录
tar -cvf - /var/log | pigz -k > logs.tar.gz
--解压文件
gzip -d filename.gz
或者
pigz -d filename.gz
---解压目录
tar xvf filename.tar.gz
或者
pigz -d filename.tar.gz
---tar.bz2
tar -c temp/* --exclude-from=temp/site_tar_exclude.list | pbzip2 -c -p4 -k -q -f > temp.tar.bz2
pbzip2 -d -p4 -k temp.tar.bz2 && tar -xf temp.tar
---tar.gz
tar -cvf - /data/file/temp/ --exclude-from=/data/file/temp/site_tar_exclude.list | pigz -9 -p 24 -k > /data/file/temp.tar.gz
pigz -d temp.tar.gz && tar -xvf temp.tar
---tgz
tar -cvf - /data/file/temp/ --exclude-from=/data/file/temp/site_tar_exclude.list | pigz -9 -p 24 -k > /data/file/temp.tgz
pigz -d temp.tgz && tar -xvf temp.tar
-保留源文件
pigz -k FreeNAS-11.2-U7.iso
-使用-l选项查看压缩后文件的压缩率
pigz -l FreeNAS-11.2-U7.iso.gz
#解压
tar -I pigz -xvf test.tar.gz -C ./
----说明:
-I 在本地文件系统中创建存档
-C 指定解压后文件存放的路径
# pbzip2参数详解
Usage: pbzip2 [-1 .. -9][-b#cdfhklm#p#qrS#tVz] \ \ \
-1…-9
设置BWT(一种压缩技术算法)的block大小为100k…900k(默认为900k)
-b#
block大小,单位是100k(默认9=900k)
-c,–stdout
输出到stdout
-d,–decompress
解压文件
-f,–force
覆盖已经存在的输出文件
-h,–help
输出帮助信息
-k,–keep
保留被压缩的文件(默认删除被压缩文件),这里是歌大坑,所以使用pbzip2压缩时,切记一定要携带-k参数
-l,–loadavg
由load average(平均负载)决定使用CPU的最大数量
-m#
最大内存使用量,单位:1MB(默认 100=100MB)
-p#
指定CPU数,即线程数(默认自动检测,检测失败后为2)
-q,–quiet
静默模式
-r,–read
读取整个文件进入内存,并在各个CPU分开处理
-S#
子线程的stack(堆栈)大小,单位:1KB
-t,–test
完整的测试压缩文件
-v,–verbose
详细信息模式
-V,–version
输出pbzip2的版本信息
-z,–compress
压缩文件(默认值)
–ignore-trailing-garbage=#
是否忽略文件末尾对齐数据块(1忽略,0禁止)
# pbzip2常用的选项
-b#, 块大小,#表示数字,单位是100k(默认900k)
-c, 输出到stdout
-d, 解压
-f, 覆盖已存在的输出文件
-h, 输出帮助
-k, 保留输入文件
-l, 最大可用处理器数量
-m#, 最大可用内存,单位MB,默认100MB
-p#, 处理器数量,默认自动检测,检测失败设置为2
-q, 安静模式,不输出处理信息
-r, 读取整个输入文件到内存,在各处理器间分开处理
-S#, 子线程栈大小
-t, 测试压缩文件的完整性
-v, 输出详细信息
-V, 输出pbzip2版本信息
-z, 压缩(默认启用)
-1, 设置BWT预处理块大小,单位100k,1压缩速度最快,但是压缩率最低。默认900k
--ignore-trailing-garbage=#, 是否忽略文件末尾对齐数据块(1忽略,0禁止)
# pbzip2常用示例
---压缩单个文件(指定3个线程)
pbzip2 test.sql -z -p3 -k > test.sql.bz2
---压缩目录(指定3个线程)
tar -c test_dir/* | pbzip2 -c -p3 -k > test_dir.tar.bz2
---解压文件(指定3个线程)
pbzip2 -d -p3 -k test.sql.bz2
---解压目录(指定3个线程)
pbzip2 -d -p3 -k test_dir.tar.bz2 && tar -xf test_dir.tar