减少Linux中压缩、解压缩文件的时间

一、通常用法

  1.1 流行的Linux发行版中,通常有tar、bz2、gz、xz等各种打包压缩解压缩程序。常见用法有几种:

    tar -cvf Drivers.tar Drivers
      只打包,Drivers.tar为保存的压缩包文件名,Drivers是想打包的文件夹或一个文件或多个文件
    tar -cjvf Drivers.tar.bz2 Drivers
      打包并且用bzip2压缩,Drivers.tar.bz2为保存的压缩包文件名,Drivers是想打包的文件夹或一个文件或多个文件
    tar -czvf Drivers.tar.gz Drivers
      打包并且用gzip压缩,Drivers.tar.gz为保存的压缩包文件名,Drivers是想打包的文件夹或一个文件或多个文件
    tar -cJvf Drivers.tar.xz Drivers
      打包并且用xz压缩,Drivers.tar.xz为保存的压缩包文件名,Drivers是想打包的文件夹或一个文件或多个文件

  1.2 上面几种方式打包压缩的归档,解包的方法可以用:

    tar -xf Drivers.tar
      解包Drivers.tar
    tar -xf Drivers.tar.bz2
      解包Drivers.tar.bz2
    tar -xf Drivers.tar.gz
      解包Drivers.tar.gz
    tar -xf Drivers.tar.xz
      解包Drivers.tar.xz

二、不足之处:

  tar、bz2、gz、xz这几个程序都已经发展很成熟,可靠性不错。然而对于多核处理器并没有充分利用,经常出现“一核有难,多核围观”,打包压缩文件速度还是太慢;

三、替代方案:

  pigz使用多线程压缩,以更充分利用多核多线程处理器(现在主流的处理器几乎都是多核了)。

  3.1 pigz压缩用法:

    tar -cvf - Drivers | pigz > Drivers.tar.gz
      打包并且用pigz压缩,Drivers.tar.gz为保存的压缩包文件名,Drivers是想打包的文件夹或一个文件或多个文件

  3.2 pigz解压缩用法:

    unpigz -c Drivers.tar.gz | tar -x
      解包Drivers.tar.gz

四、性能对比:

  4.1 测试用处理器为4核8线程的4350G,要压缩的文件是1个8589934592字节的大文件跟1个651字节的小文件,放在Drivers目录下

  4.2 打包压缩用时

    tar -cvf Drivers.tar Drivers
      只打包,打包后文件8589946880字节,测试3次,用时分别为2秒、2秒、2秒
    tar -cjvf Drivers.tar.bz2 Drivers
      bz2压缩,压缩后文件1267264688字节,测试3次,用时分别为271秒、272秒、271秒
    tar -czvf Drivers.tar.gz Drivers
      gzip压缩,压缩后文件1359462030字节,测试3次,用时分别为127秒、126秒、127秒
    tar -cJvf Drivers.tar.xz Drivers
      xz压缩,压缩后文件944230876字节,测试3次,用时分别为984秒、987秒、992秒
    tar -cvf - Drivers | pigz > Drivers.tar.gz
      pigz压缩,压缩后文件1357749891字节,测试3次,用时分别为23秒、23秒、23秒

  4.3 解压缩用时

    unpigz -c Drivers.tar.gz | tar -x
      Drivers.tar.gz为前面用pigz压缩后的归档,测试3次,用时分别为19秒、19秒、19秒
    unpigz -c Drivers.tar.gz | tar -x
      Drivers.tar.gz为前面用gzip压缩后的归档,测试3次,用时分别为20秒、19秒、19秒
    tar -xf Drivers.tar.bz2
      Drivers.tar.gz为前面用bz2压缩后的归档,测试3次,用时分别为162秒、165秒、160秒
    tar -xf Drivers.tar.gz
      Drivers.tar.gz为前面用pigz压缩后的归档,测试3次,用时分别为37秒、37秒、38秒
    tar -xf Drivers.tar.gz
      Drivers.tar.gz为前面用gzip压缩后的归档,测试3次,用时分别为37秒、37秒、37秒
    tar -xf Drivers.tar.xz
      Drivers.tar.gz为前面用xz压缩后的归档,测试3次,用时分别为63秒、63秒、62秒

五、兼容性

  5.1 pigz、gzip可以互相解开对方创立的归档文件;

  5.2 pigz、bz2、xz无法互相解开对方创立的归档文件;

  5.3 bz2、gzip、xz无法互相解开对方创立的归档文件;