跳至內容

gzip

維基百科,自由的百科全書

這是本頁的一個歷史版本,由Sweater對話 | 貢獻2013年6月24日 (一) 16:21編輯。這可能和目前版本存在着巨大的差異。

GNU Gzip
開發者GNU計劃
當前版本
  • 1.13(2023年8月19日;穩定版本)[1]
編輯維基數據鏈接
原始碼庫 編輯維基數據鏈接
程式語言C
作業系統跨平台
類型數據壓縮
許可協議GNU GPL
網站www.gnu.org/software/gzip/
NetBSD Gzip / FreeBSD Gzip
開發者NetBSD基金會
當前版本
  • 1.13(2023年8月19日;穩定版本)[1]
編輯維基數據鏈接
原始碼庫 編輯維基數據鏈接
程式語言C
作業系統跨平台
類型數據壓縮
許可協議BSD許可證
網站www.gnu.org/software/gzip/ 編輯維基數據

Gzip是若干種文件壓縮程序的簡稱,通常指GNU計劃的實現,此處的gzip代表GNU zip。也經常用來表示gzip這種文件格式。軟件的作者是Jean-loup Gailly和Mark Adler。1992年10月31日第一次公開發布,版本號是0.1。

OpenBSD中所包含的的gzip實際上是compress,其對gzip文件的支持在OpenBSD 3.4中添加,此處g代表免費(gratis[2]

文件格式

gzip
副檔名
.gz
網路媒體型式
application/x-gzip
統一類型標識org.gnu.gnu-zip-archive
開發者Jean-Loup Gailly and Mark Adler
格式類型數據壓縮
免費格式?
網站http://www.gzip.org/

gzip的基礎是DEFLATE,DEFLATE是LZ77哈夫曼編碼的一個組合體。DEFLATE最初是作為LZW以及其它受專利保護的數據壓縮算法的替代版本而設計的,當時那些專利限制了compress以及其它一些流行的歸檔工具的應用。

文件格式說明:

  • 10位元組的頭,包含幻數、版本號以及時間戳
  • 可選的擴展頭,如原文件名
  • 文件體,包括DEFLATE壓縮的數據
  • 8位元組的尾注,包括CRC-32校驗和以及未壓縮的原始數據長度

儘管這種文件格式允許多個這樣的數據拼接在一起,在解壓時也把它們當作拼接在一起的數據,但是通常gzip僅僅用來壓縮單個文件。多個文件的壓縮歸檔通常是首先將這些文件合併成一個tar文件,然後使用gzip進行壓縮,最後生成的.tar.gz或者.tgz文件,這就是所謂的「tar壓縮包」或者「tarball」。

注意不要將gzip和ZIP壓縮格式混淆。ZIP也使用DEFLATE算法,而且可移植性更好,並且不需要一個外部的歸檔工具就可以包容多個文件。但是,由於ZIP對每個文件進行單獨壓縮而沒有利用文件間的冗餘信息(固實壓縮),所以ZIP的壓縮率要稍遜於tar壓縮包。

zlib是DEFLATE算法的實現庫,它的API同時支持 gzip文件格式以及一個簡化的數據流格式。zlib數據流格式、DEFLATE以及gzip文件格式均已被標準化成了,分別是RFC 1950、RFC 1951以及RFC 1952。

gzip命令的常用選項

  • -c,--stdout 將解壓縮的內容輸出到標準輸出,原文件保持不變
  • -d,--decompress 解壓縮
  • -f,--force 強制覆蓋舊文件
  • -l,--list 列出壓縮包內儲存的原始文件的信息(如,解壓後的名字、壓縮率等)
  • -n,--no-name 壓縮時不保存原始文件的文件名和時間戳,解壓縮時不恢復原始文件的文件名和時間戳(此時,解出來的文件,其文件名為壓縮包的文件名)
  • -N,--name 壓縮時保存原始文件的文件名和時間戳,解壓縮時恢復原始文件的文件名和時間戳
  • -q,--quiet 抑制所有警告信息
  • -r,--recursive 遞歸
  • -t,--test 測試壓縮文件完整性
  • -v,--verbose 冗餘模式(即顯示每一步的執行內容)
  • -1、-2、...、-9 壓縮率依次增大,速度依次減慢,默認為-6

其它應用

HTTP/1.1協議允許客戶端可以選擇要求從伺服器下載壓縮內容,這個標準本身定義了三種壓縮方法:「gzip」(內容用gzip數據流進行封裝)、「compress」(內容用compress數據流進行封裝)以及「deflate」(內容是原始格式、沒有數據頭的DEFLATE數據流)[3]。許多HTTP客戶端庫以及絕大多數現代的瀏覽器都支持前後兩種格式。

二十世紀九十年代末期以來,一個基於數據塊排序算法的文件壓縮工具bzip2作為gzip的替代者逐漸得到流行,它可以生成相當小的壓縮文件,尤其是對於原始碼以及其它的結構化文本來說更是這樣,但是這樣做的代價是最高達4倍內存與處理器時間消耗。bzip2壓縮的tar包傳統上叫作.tar.bz2

AdvanceCOMP也有一個DEFLATE實現,它產生的gzip兼容文件比gzip本身的壓縮率更高。

gzip壓縮文件對應的解壓程序是gunzip

參見

參考資料

  1. ^ 1.0 1.1 "gzip-1.13 released [stable"]; 作者姓名字符串: Jim Meyering; 出版日期: 2023年8月19日; 檢索日期: 2023年8月20日.
  2. ^ OpenBSD gzip(1) manual page. OpenBSD. [2007-07-23]. 
  3. ^ http://tools.ietf.org/html/rfc2616#section-3.5

外部連結