bzip2是Julian Seward开发并按照自由软件/开源软件协议发布的数据压缩算法及程序。Seward在1996年7月第一次公开发布了bzip2 0.15版,在随后几年中这个压缩工具稳定性得到改善并且日渐流行,Seward在2000年晚些时候发布了1.0版。
软件简介
bzip2的实现使用了多层压缩技术,包括游程编码(RLE)、Burrows-Wheeler变换(BWT)、移至前变换(MTF)、霍夫曼编码等。这些技术在压缩期间按顺序堆叠,而在解压期间则相反。bzip2的文件格式没有正式规范,但已经从参考实现中逆向工程出了一个非正式的规范。.bz2流由一个4字节的头部组成,后面是一个或多个压缩块,紧接着是一个包含整个流的32位CRC的流结束标记。压缩块是位对齐的,不会发生填充。
bzip2适用于大数据应用,如Hadoop和Apache Spark等集群计算框架,因为压缩块可以独立解压缩。此外,受到压缩所需的长时间的启发,2003年创建了一个修改版本,称为pbzip2,它使用多线程在多CPU和多核计算机上对文件进行编码,几乎可以实现线性加速。一些存档程序内置了对压缩和解压缩的支持,因此不需要使用bzip2程序来压缩或解压缩存档。GnuPG也内置了对bzip2压缩和解压缩的支持。GREP-based bzgrep工具允许直接搜索压缩的文本,无需先解压内容。
Linux下常见的压缩文件格式,是由具有高压缩率的压缩工具bzip2生成,以后缀为.bz2结尾的压缩文件。
对应的解压程序是bunzip2。
在windows下,可以使用WinMount、WinRAR等来打开bz2文件。
bzip2 是一个基于Burrows-Wheeler 变换的无损压缩软件,压缩效果比传统的LZ77/LZ78压缩演算法来得好。它免费提供,具有高质量的数据压缩能力。bzip2 利用先进的压缩技术,能够把文件压缩到10%至15%,压缩的速度和解压的效率都非常高。支持大多数压缩格式,包括tar、gzip 等等。
bzip2当前最新的版本是1.0.5 ,公布2008年4月17日。
功能与服务
1、能够很好的进行文件压缩。这样你就可以把HDD中冗余繁多的文件,打包压缩整理。在网络上传送文件的时候,可以用bzip2打包压缩文件,以减少传送时间,提高效率。虽然bzip2不是最快的压缩工具,但是它已经足够的快且足够的好用。
2、它开放源码,且无需付费使用。
3、支持修复介质错误。当你需要从包含了一些错误数据的备份磁盘上,修复或者获得含有错误数据的压缩文件中的数据时,bzip2仍能完美的解压出没有被破坏的部分。
4、和gzip的用法类似
5、这是一款轻量级的工具。它可以运行在任何含有ANSI C编译器的32位或者64位的主机上。
6、bzip2比传统的gzip或者ZIP的压缩效率更高,但是它的压缩速度较慢。从这点来说,它非常类似于出现的其它一些压缩算法。与RAR或者ZIP等其它不同的是,bzip2只是一个数据压缩工具,而不是归档工具,在这一点上它与gzip类似。程序本身不包含用于多个文件、加密或者文档切分的工具,相反按照unix的传统需要使用如tar或者GnuPG这样的外部工具。
在有些情况下,按照绝对压缩效率来讲bzip2不如7z和RAR格式。根据摩尔定律的持续效应,计算时间越来越少并且也变得越来越不重要,所以类似的压缩方法变得越来越流行。根据作者的说法,在所有已知的压缩算法中,bzip2可以排到百分之十到十五这样最好的一类算法中(PPM),尽管它在压缩速度时大致快两倍,而解压速度有六倍快。
bzip2使用Burrows-Wheeler transform将重复出现的字符序列转换成同样字母的字符串,然后用move-to-front transform进行处理,最后使用哈夫曼编码进行压缩。在bzip2中所有的数据块都是大小一样的纯文本数据块,它们可以用命令行变量进行选择,然后用从π的十进制表示得到的一个任意位序列标识成压缩文本。
起初,bzip2的前一代 bzip在数据块排列之后使用算术编码进行压缩,由于软件专利的限制已经不再使用算术编码。
发展历程
bzip2的开发始于1996年,由Julian Seward发布了首个公开版本0.15。随着时间的推移,bzip2的稳定性和流行度不断增长,Seward于2000年底发布了1.0版本。该项目在2010年后停止更新了九年,直到2019年6月4日,Federico Mena接受了bzip2项目的维护。自2021年6月起,Micah Snyder成为了维护者。
参考资料