gzip

GNU檔案壓縮/解壓縮工具

gzip是一種壓縮檔案格式並且也是一個在類 Unix 上的一種檔案解壓縮的軟件,通常指GNU計劃的實現,此處的gzip代表GNU zip。也經常用來表示gzip這種檔案格式。軟件的作者是Jean-loup Gailly和Mark Adler。在1992年10月31日第一次公開發佈,版本號0.1,1993年2月,釋出了1.0版本。

gzip
原作者
開發者GNU計劃
首次釋出1992年10月31日,​32年前​(1992-10-31
目前版本
  • 1.13(2023年8月19日;穩定版本)[1]
編輯維基數據連結
原始碼庫git.savannah.gnu.org/cgit/gzip.git
程式語言C
作業系統Unix-like
類型數據壓縮
特許條款GNU GPLv3
網站www.gnu.org/software/gzip/
NetBSD gzip / FreeBSD gzip
開發者NetBSD基金會
原始碼庫 編輯維基數據連結
程式語言C
作業系統跨平台
類型數據壓縮
特許條款BSD特許條款
網站www.gnu.org/software/gzip/ 編輯維基數據

OpenBSD中所包含的gzip版本實際上是compress程式,其對gzip檔案的支援在OpenBSD 3.4中被添加,此處的g代表免費(gratis[2]

檔案格式

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

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

檔案格式說明:

  • 10位元組的頭,包含幻數、版本號以及時間戳
  • 可選的擴充頭,如原檔名
  • 檔案體,包括DEFLATE壓縮的數據
  • 8位元組的章節附註,包括CRC-32校驗和以及未壓縮的原始數據長度

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

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

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

衍生品和其它應用

在大多數Linux發行版中,通過使用 zx 選項來提取.tar.gz格式的壓縮檔案,例如:tar -zxf file.tar.gz。

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

gzip在HTTP壓縮頁面存檔備份,存於互聯網檔案館),一種在萬維網中加速傳輸HTML和其他內容的技術。它是在 RFC 2016 中規定的三種標準HTTP壓縮格式之一。這個RFC(徵求意見稿)頁定義了一種叫做"DEFLATE"的zlib格式,它和gzip格式相同,除了gzip添加了11位元組頭部和尾部的負載。但是,現在還是建議使用gzip而不是zlib,因為根據 RFC 1950, IE頁面存檔備份,存於互聯網檔案館)還沒有正確的實現該標準,還不能處理zlib格式。

zlib DEFLATE 已經在 Portable Network Graphics頁面存檔備份,存於互聯網檔案館)(PNG)格式中使用。

自20世紀90年代末期以來,一個基於數據塊排序演算法的檔案壓縮工具bzip2作為gzip的替代者逐漸得到流行,它可以生成相當小的壓縮檔案,尤其是對於原始碼和其他結構化文字更是這樣,但代價是最高達4倍的主記憶體與處理器時間消耗。bzip2壓縮的tar包傳統上叫作.tar.bz2.tbz

AdvanceCOMP英語AdvanceCOMP7zip內部也有一個DEFLATE實現,可以製作gzip相容的壓縮檔案,與gzip相比有更高的壓縮率,不過比較耗費處理器的處理時間。

gzip壓縮檔案對應的解壓程式是gunzip

參見

參考資料

  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. ^ RFC 6713 - The 'application/zlib' and 'application/gzip' Media Types

外部連結