> Linux教程 > linux基础 >

Linux 并行压缩程序 pbzip2 小记

  • pbzip2和bzip2的压缩对比
  • pbzip2常用命令
  • pbzip2实际执行截图
  • pbzip2选项详解

Linux最常用的压缩程序是bzip2,但是bizp2可以算是上古程序了,不支持多核。现在PC一般都是双核四核了。建议使用pbzip2替代bzip2,以下实验数据为证。

压缩4G随机生成数据,耗时对比

查看实验环境,生成4G随机数据
genrate-random-data使用pbzip2压缩
time-pbzip2使用bzip2压缩

time-bzip2

  • pbzip2 压缩耗时 2m37.668s = 157.668s
  • bzip2 压缩耗时 19m43.013s = 1183.013s

这还要说什么?在16核的情况下压缩同一份4G随机数据,竟然时间相差7倍多。当然使用pbzip2啦!

下面我们来介绍一下pbzip2的常用命令

常用的选项有

  • -d 用于解压缩
  • -k 用于保留源文件

压缩:

# pbzip2 -k  file1 file2 fileN

解压缩

# pbzip2 -dk file1 file2 fileN

在tar中调用压缩

 
# tar cf myfile.tar.bz2 -I pbzip2 file1 fileN dir_to_compress/

在tar中调用解压缩

# tar -xf eclipse.tar.bz2 -I pbzip2

Note:

  • Linux中所有东西都是文件,所以以上文件也可以是目录。
  • 默认压缩后,是删除源文件的,如果要保留源文件使用-k选项
  • -I(大写的”i”)是--use-compress-prog(指定调用压缩程序)简略写法,但是我也没看出来为什么用I ..
  • 解压缩时,不能写成tar -xf -I pbzip2 eclipse.tar.bz2,这样会把-I当做文件名。-f后面一定要跟文件名。

下面实际执行一次

准备数据:用百度首页和腾讯首页作为数据源

prepare-raw-data

压缩数据:

pbzip2-compression

解压缩

pbzip2-decompression

使用tar打包压缩

tar-pbzip2-compression

使用tar批量解压:

tar-pbzip2-decompression

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禁止)

参考

  • Parallel BZIP2 (PBZIP2)
  • /dev/random vs /dev/urandom的区别
  • gzip: stdin: decompression OK, trailing garbage ignored
(责任编辑:IT)