linux 文件壓縮格式詳解
壓縮文件原理
在計算機科學(xué)和信息論中,數(shù)據(jù)壓縮或者源編碼是按照特定的編碼機制用比未經(jīng)編碼少的數(shù)據(jù)比特(或者其它信息相關(guān)的單位)表示信息的過程。例如,如果我們將“compression”編碼為“comp”那么這篇文章可以用較少的數(shù)據(jù)位表示。常見的例子是ZIP文件格式,此格式不僅僅提供壓縮功能,還可作為歸檔工具(Archiver),能夠?qū)⒃S多文件存儲到同一個文件中。
簡單的說,就是經(jīng)過壓縮軟件壓縮的文件叫壓縮文件,壓縮的原理是把文件的二進制代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該文件的空間。
壓縮文件的基本原理是查找文件內(nèi)的重復(fù)字節(jié),并建立一個相同字節(jié)的"詞典"文件,并用一個代碼表示,比如在文件里有幾處有一個相同的詞"中華人民共和國"用一個代碼表示并寫入"詞典"文件,這樣就可以達到縮小文件的目的。
常見的壓縮格式
- zip
ZIP文件格式是一種數(shù)據(jù)壓縮和文檔儲存的文件格式,原名Deflate,發(fā)明者為菲爾·卡茨(Phil Katz),他于1989年1月公布了該格式的資料。ZIP通常使用后綴名“.zip”,它的MIME格式為application/zip。當前,ZIP格式屬于幾種主流的壓縮格式之一,其競爭者包括RAR格式以及開放源碼的7z格式。從性能上比較,RAR及7z格式較ZIP格式壓縮率較高,而7-Zip由于提供了免費的壓縮工具而逐漸在更多的領(lǐng)域得到應(yīng)用。Microsoft從Windows ME操作系統(tǒng)開始內(nèi)置對zip格式的支持,即使用戶的計算機上沒有安裝解壓縮軟件,也能打開和制作zip格式的壓縮文件,OS X和流行的Linux操作系統(tǒng)也對zip格式提供了類似的支持。因此如果在網(wǎng)絡(luò)上傳播和分發(fā)文件,zip格式往往是最常用的選擇。
- gzip
Gzip是若干種文件壓縮程序的簡稱,通常指GNU計劃的實現(xiàn),此處的gzip代表GNU zip。也經(jīng)常用來表示gzip這種文件格式。軟件的作者是Jean-loup Gailly和Mark Adler。在1992年10月31日第一次公開發(fā)布,版本號0.1,1993年2月,發(fā)布了1.0版本
- bzip2
bzip2是Julian Seward開發(fā)并按照自由軟件/開源軟件協(xié)議發(fā)布的數(shù)據(jù)壓縮算法及程序。Seward在1996年7月第一次公開發(fā)布了bzip2 0.15版,在隨后幾年中這個壓縮工具穩(wěn)定性得到改善并且日漸流行,Seward在2000年晚些時候發(fā)布了1.0版。
- 7z
在計算機科學(xué)中,7z是一種可以使用多種壓縮算法進行數(shù)據(jù)壓縮的文件格式。該格式最初被7-Zip實現(xiàn)并采用,但是這種文件格式是公有的,并且7-Zip軟件本身亦在GNU寬通用公共許可證 (GNU LGPL)協(xié)議下開放源代碼。當前LZMA軟件開發(fā)工具包的最新版本為v15.12。
- rar
RAR是一種專利文件格式,用于數(shù)據(jù)壓縮與歸檔打包,開發(fā)者為尤金·羅謝爾(俄語:Евгений Лазаревич Рошал,拉丁轉(zhuǎn)寫:Yevgeny Lazarevich Roshal),RAR的全名是“Roshal ARchive”,即“羅謝爾的歸檔”之意。首個公開版本RAR 1.3發(fā)布于1993年。
尤金·羅謝爾,1972年3月10日生于俄羅斯。畢業(yè)于俄羅斯車里雅賓斯克工業(yè)大學(xué)(Chelyabinsk Technical University,今南烏拉州立大學(xué)),也是FAR文件管理器的作者。他開發(fā)程序壓縮或解壓RAR文件,最初用于DOS,后來移植到其它平臺。主要的Windows版本編碼器,稱為WinRAR,以共享軟件的形式發(fā)行。不過羅謝爾公開了解碼器源碼,UnRAR解碼器許可證以不許發(fā)布編譯RAR兼容編碼器為條件下允許有條件自由發(fā)布與修改,而RAR編碼器一直是有專利的。
最近的開發(fā)者是尤金·羅謝爾的胞兄亞歷山大·羅謝爾。雖然其解碼器有專利,編譯好的解壓程序仍然存在于若干平臺,例如開源的7-Zip。
常見的壓縮文件壓縮和解壓縮
文件后綴名 | 說明 | 壓縮 | 解壓縮 |
---|---|---|---|
*.zip | zip 程序打包壓縮的文件 | zip fileName.zip dirName | unzip fileName.zip |
*.rar | rar 程序壓縮的文件 | rar a fileName.rar dirName | rar x fileName.rar |
*.7z | 7zip 程序壓縮的文件 | 7z a fileName.7z dirName | 7z x fileName.7z |
*.tar | tar 程序打包,未壓縮的文件 | tar cvf fileName.tar dirName | tar xvf fileName.tar |
*.gz | gzip 程序 (GNU zip) 壓縮的文件 | gzip fileName | gzip -d fileName.gz |
*.bz2 | tar 打包,gzip 程序壓縮的文件 | bzip2 -z FileName | bzip2 -d FileName.bz2 |
*.tar.gz | tar打包,gzip程序壓縮的文件 | tar zcvf FileName.tar.gz dirName | tar zxvf FileName.tar.gz |
*.tar.xz | tar打包,xz程序壓縮的文件 | tar cvJf fileName.tar.xz dirName | tar -xvJf fileName.tar.xz |
*.tar.bz2 | tar打包,bzip2程序壓縮的文件 | tar jcvf FileName.tar.bz2 dirName | tar jxvf FileName.tar.bz2 |
*.Z | compress命令解壓縮rar文件 | compress fileName | uncompress fileName.Z |