减少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无法互相解开对方创立的归档文件;