Linux 下压缩工具比对(gzip,bzip2,xz,pigz,lbzip2)

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/vkingnew/article/details/82881220
1.当前使用的问题:
使用tar.gz 进行文件归档和压缩,当文件在50G以下压缩的文件的压缩比、压缩时间、上传下载还是可以接受的。
当数据的原始文件超过100G以上,文件的压缩、解压、文件传输就会耗费较长的时间。
期望找到可以快速压缩(压缩时间短)、占用磁盘空间小传输快(压缩比高,压缩后文件小)、
资源利用率低(CPU、内存、磁盘IO)的一种压缩方式。

2.Linux下的常用压缩概述:
gzip、bzip2 是不支持并行压缩的,默认采用的压缩等级为-6。
而xz默认不启用并行压缩,默认为单线程,虽然支持支持多线程压缩,默认的压缩等级为-6.

对于gzip的并行压缩软件是pigz,支持并行压缩,网站地址为:http://zlib.net/pigz/
对于bzip2的并行压缩软件为pbzip2,网站为:https://launchpad.net/pbzip2  http://compression.ca/pbzip2/
此外还有lbzip2,网站为:http://lbzip2.org/

而xz则被成为压缩之王,压缩率很高。网站为:https://tukaani.org/xz/

3.常用压缩软件的发布:
压缩软件  使用的版本 第一个版本发布时间  最新版本号 最新版本发布时间
gzip     1.5        1992.10.31        1.9       2018.2.7
pigz     2.3.4                        2.4.0     2017.12.26                
bzip2    1.0.6      1996.07.18        1.0.6     2010.09.20     
pbzip2   1.1.12                       1.1.13    2015-12-17 
lbzip2   2.5                          2.5       2014-03-26
xz       5.2.2                        5.2.4     2018-04-29

就这些压缩软件的发布来说 bzip2 已经有8年之久没有更新了,依赖其实现的pbzip2和lzip2最后更新
时间也有3-4年未更新了,随着时间的推移bzip2基本会淡出。

gzip和xz还是更新较为频繁的,以后还会被广泛使用。gzip压缩使用更为广泛,而pigz和zlib是一个
项目组维护的,xz被称之为压缩之王,在大数据时代文件压缩的重要性不言而喻。

4.运行环境及软件安装:
# cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core) 
# yum -y install tat gzip bzip2 pigz lbzip2 pbzip2 xz

5.测试比对:

由于在实际应用中经常需要压缩文件,对以上压缩软件测试一番。
5.1 

第一轮测试 测试不同的压缩级别,压缩相同文件大小(91G) 耗费的时间、CPU负载、磁盘占用、磁盘IO读写和内存占用的情况。
说明:gzip bzip2 xz 默认的压测级别为6,gzip和bzip2不支持并行压缩,xz默认不使用并行压缩。


结论:
单线程的压缩在时间上基本不能接受,不能充分利用CPU资源。
在压缩等级相同的情况下压缩率优先推荐:
在并发数和压缩等级相同的情况下选择优先推荐:
在CPU利用率有要求的情况下的优先级推荐:
在压缩时间要求的情况下优先级推荐:
综合考虑的推荐:

5.2
第二轮测试 测试在相同压缩级别下 不同并发 压缩相同文件大小(91G)的资源消耗情况。
说明:这里只测试验证支持并行压缩的压缩软件,pigz和lbzip2,xz。


结论:可以看到在不同CPU核心数的情况下各个支持并行压缩的软件的耗时和资源利用。


6.综合结论:
比较推荐lbzip2 其次为pigz,其次为xz.
xz适用于服务器资源比较宽松的情况下,CPU和内存,压缩率比较高,适用于压缩不频繁但是解压频繁的场景;
pigz对CPU的负载会高一些,在压缩比和时间上都是比较满意的,熟悉gzip的比较多,适用于频繁压缩的场景。
lbzip2系列软件缺乏发展前景,相对pbzip2压缩率和时间上都更高,但是熟悉的比较少。







猜你喜欢

转载自blog.csdn.net/vkingnew/article/details/82881220