tar ,bzip2,gzip等都是常用的压缩工具,但是这些命令都只能工作在一个cpu下,即使服务器是多核cpu也无法同时工作在多个cpu上,然而pbzip2 正好解决了这个问题。
下面简单介绍下这个工具
pbzip2 要求 bzip2 的版本在 1.0.5以上,所以在此之前先检查下机器上的bzip2的版本用 bzip2 -V 即可,如果低于这个版本那么需要先升级bzip2,从官方下载即可
自动安装方法:
yum install bzip2 -y
yum install pbzip2 -y
如果无法自动安装,手动安装方法如下:去官方下载
https://sourceware.org/pub/bzip2/
我下载的是最新版 1.0.8
wget https://sourceware.org/pub/bzip2/bzip2-latest.tar.gz
tar zxf bzip2-latest.tar.gz
cd bzip2-1.0.8
make
make install PREFIX=/usr (由于,原来的bzip就安装在/usr/bin 因此我直接覆盖)
bzip2 -V (如果显示版本为1.0.6表示升级成功)
安装pbzip2,可以rpm安装,这里我选择源码安装
先去下载一个源码包 http://compression.ca/pbzip2/
我下载最新的 tar zxf pbzip2-1.1.13.tar.gz
wget https://launchpad.net/pbzip2/1.1/1.1.13/+download/pbzip2-1.1.13.tar.gz
tar zxf pbzip2-1.1.13.tar.gz
cd pbzip2-1.1.13
make
make install (没有报错的话基本就安装成功)
测试
用cat /proc/cpuinfo 先看下cpu核心个数,我这里是4*6=24个核
生成一个随机的4GB数据
dd if=/dev/urandom of=testdata.dat bs=4M count=1024
然后用pbzip2进行压缩,并用time命令查看时间
time pbzip2 -k testdata.dat
用bzip2进行压缩 用time命令查看时间
time bzip2 testdata.dat
(以下是结果16分5秒)
real 16m5.933s
user 15m54.647s
sys 0m8.081s
查看cpu工作状态(可以看到24个核心都在工作)
对比下时间
同样的文件,bzip2压缩时间是16.5分,pbzip2压缩时间是1.27分,速度有10倍之差
下面介绍下pbzip2的常用方法
压缩
pbzip2 -k file1 file2
解压缩
pbzip2 -dk file1 file2
tar中调用压缩
tar cf myfile.tar.bz2 -I pbzip2 file1 fileN dir_to_compress/
tar中调用解压缩
tar -xf eclipse.tar.bz2 -I pbzip2
压缩单个文件(指定4个线程并行压缩)提示:如果此处采用gzip压缩的话,非常的消耗时间,而采用pbzip2压缩,则比gzip压缩快好多同时压缩效率比gzip还要高。当时此时的pbzip2压缩线程是非常的消耗服务器的CPU的
[root@cacti tmp]# pbzip2 drnew0430.sql -z -p4 -k > drnew0430.sql.bz2
pbzip2: *ERROR: Output file [drnew0430.sql.bz2] already exists! Use -f to overwrite...
压缩提示错误,加上参数-f解决报错:
[root@cacti tmp]# pbzip2 drnew0430.sql -z -p4 -f -k > drnew0430.sql.bz2
[root@cacti tmp]# du -sh 2017-12-21drnew0430.sql.gz drnew0430.sql.bz2 drnew0430.sql
1.1G 2017-12-21drnew0430.sql.gz
778M drnew0430.sql.bz2
5.0G drnew0430.sql
验证pbzip2比gzip压缩快好多同时压缩效率比gzip还要高
解压文件(指定3个线程)
pbzip2 -d -p3 -k drnew0430.sql.bz2
压缩目录(指定3个线程)
tar -c test_dir/* | pbzip2 -c -p3 -f -k > test_dir.tar.bz2
解压目录(指定3个线程)
pbzip2 -d -p3 -k test_dir.tar.bz2
tar -xf test_dir.tar
或者
pbzip2 -d -p3 -k test_dir.tar.bz2 && tar -xf test_dir.tar
pbzip2限制
由于pbzip2只能压缩文件,不能对目录进行压缩,所以如果想使用pbzip2压缩目录,则需要借助tar工具。
常用选项和命令
-d 用于解压缩
-k 用于保留源文件
-I是–use-compress-prog(指定调用压缩程序)简略写法
b#, 块大小,#表示数字,单位是100k(默认900k)
-c, 输出到stdout
-f, 覆盖已存在的输出文件
-h, 输出帮助
-l, 最大可用处理器数量
-m#, 最大可用内存,单位MB,默认100MB
-p#, 处理器数量,默认自动检测,检测失败设置为2
-q, 安静模式,不输出处理信息
-r, 读取整个输入文件到内存,在各处理器间分开处理
-S#, 子线程栈大小
-t, 测试压缩文件的完整性
-v, 输出详细信息
-V, 输出pbzip2版本信息
-z, 压缩(默认启用)
-1, 设置BWT预处理块大小,单位100k,1压缩速度最快,但是压缩率最低。默认900k
–ignore-trailing-garbage=#, 是否忽略文件末尾对齐数据块(1忽略,0禁止) 版权属于: 三三世界-百宝箱
本文链接: http://33f.net/setup/centos_pbzip2.html
本文最后更新于2022年02月18日 ,已超过1507天没有更新,若内容或图片失效,请留言反馈。
本文允许转载,但请在转载时请以超链接或其它形式标明文章出处
@Doug Shume it's ok for me , you can post here.
zh.us.to 有效
kms.03k.org 有效
kms.chinancce.com
kms.shuax.com 有效
kms.dwhd.org 有效
kms.luody.info 有效
kms.digiboy.ir 有效
kms.lotro.cc 有效
www.zgbs.cc 有效
cy2617.jios.org 有效
@ 权限问题,试试sudo 再加命令。
你好提示Permission denied 怎么办啊