使用 pigz, pbzip2 进行快速压缩 Linux教程 数据备份



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




签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回