现在的服务器CPU一般是多核的,但zip、gzip和bzip2都只能使用一个核心,如果文件比较大的话,压缩时间会很长。pbzip2/pbunzip2可以使用多个核心并行压缩/解压缩,极大地提高了效率。
多核心并行压缩/解压缩文件
pbzip2 [option] file
pbunzip2 [option] file.bz2
-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的用法与bzip2类似,如果不用-p参数定义使用的cpu核心数目,则使用全部可用核心。压缩后的文件后缀也是.bz2。
[peter@ibi98 zip]$ ll 总用量 440264 -rw-rw-r-- 1 peter peter 450829079 3月 28 21:03 GCF_000001405.33_GRCh38.p7_rna.fna [peter@ibi98 zip]$ time bzip2 GCF_000001405.33_GRCh38.p7_rna.fna real 1m19.876s user 1m18.517s sys 0m0.794s [peter@ibi98 zip]$ time bunzip2 GCF_000001405.33_GRCh38.p7_rna.fna.bz2 real 0m24.281s user 0m23.029s sys 0m1.060s [peter@ibi98 zip]$ time pbzip2 GCF_000001405.33_GRCh38.p7_rna.fna real 0m9.745s user 1m42.689s sys 0m5.635s [peter@ibi98 zip]$ time pbunzip2 GCF_000001405.33_GRCh38.p7_rna.fna.bz2 real 0m4.473s user 0m45.796s sys 0m3.971s
上面是用bzip2和pbzip2做的压缩时间比较,bzip2用了接近1分20秒,而pbzip2只用了不到10秒,压缩时间大大缩短。解压缩使用pbunzip2时速度也快了很多。