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成為了維護者。
參考資料 >