GZIP 壓縮檔 (.gz)
IETF 標準Gzip (GZ) 是 GNU 的壓縮公用程式,也是類 Unix 系統與 HTTP 伺服器上用於檔案和網路資源的廣泛使用檔案格式。
將 TAR 轉換為 GZ
免費的瀏覽器端 TAR 轉 GZ 轉換器。在您的裝置上即時轉換檔案。
檢查與中繼資料
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 GZ 檔案:
位元組層級標頭簽章(檔案簽章)
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 GZ 檔案:
十六進位簽章(偏移量 0):
1F 8B 08ASCII 表示法: ..\x08
標準化: IETF RFC 1952
技術規格
| 容器架構 | 10 位元組標頭(magic 0x1F 0x8B、method 8、flags、mtime、OS),後接 DEFLATE 串流與 8 位元組頁尾 |
| 壓縮 | DEFLATE 演算法(LZ77 滑動視窗 + 霍夫曼編碼) |
| 位元組序 | 小端序標頭與頁尾整數 |
| 色彩空間 | 不適用(封存容器) |
| 色版與結構 | 單一檔案壓縮位元組串流 |
| 最大尺寸 | 未壓縮大小記錄採模 2^32(支援無限串流長度) |
| 透明度 | 100% 位元精確的無損資料保留 |
| 串流與漸進式 | 透過管線與 HTTP 網路進行循序單次串流播放 |
技術比較矩陣:GZ 對比競爭格式
| 技術屬性 | GZ (目前) | BZ2 | BROTLI | ZSTD |
|---|---|---|---|---|
| 解壓縮速度 | 快速(約 300 MB/s) | 慢速(約 40 MB/s) | 非常快(約 400 MB/s) | 超快(>1.5 GB/s) |
| 廣泛網路使用 | 瀏覽器與伺服器提供廣泛支援;內容編碼會於每個請求中協商 | 瀏覽器不支援 | 許多瀏覽器在 HTTPS 下支援;各版本的支援情況不一 | 瀏覽器與伺服器支援度日益增加 |
| 多檔案打包 | 需要 TAR 容器(.tar.gz) | 需要 TAR 容器(.tar.bz2) | 原始串流或自訂容器 | 需要 TAR 容器(.tar.zst) |
| 檢查碼驗證 | 32 位元 CRC(CRC-32) | 每區塊 32 位元 CRC | 串流本身未內建 | 64 位元 xxHash |
常見損壞模式與十六進位修復指南
解壓縮錯誤:「gzip: stdin: unexpected end of file」(非預期的檔案結尾)。
根本原因: 檔案傳輸提前終止,切斷了 DEFLATE 串流或 8 位元組 CRC32 頁尾。
修復: 使用「gzip -d --keep broken.gz」或 File2File.app Gzip 萃取器解壓縮部分內容。
安全性分析與解析器攻擊向量
Gzip 解析器會處理使用者控制的標頭與 DEFLATE 位元串流,必須防範解壓縮炸彈。
已知攻擊向量
- 將數 MB 的 Gzip 資料擴展成數百 GB 磁碟空間的解壓縮炸彈(ZIP 炸彈)。
- 從標頭讀取選用的原始檔案名稱字串時發生緩衝區溢位。
- 32 位元 CRC 檢查比較期間發生整數溢位。
防禦最佳實務: 在自動化資料匯入服務中強制執行嚴格的解壓縮配額與記憶體上限限制。
歷史起源與里程碑
1996IETF 將 Gzip 檔案格式規格正式標準化為 RFC 1952。
1993獲 GNU 專案採用,以取代專屬的 Unix「compress」公用程式(.Z 檔案)。
1992Jean-loup Gailly 與 Mark Adler 為自由軟體運動建立了免專利的壓縮工具 Gzip。
主要優勢與優點
- 一種廣泛支援的 HTTP 內容編碼,不過用戶端與伺服器可能會協商其他編碼或不進行壓縮。
- 在 10 位元組標頭中保留了原始檔案修改時間戳記與選用的原始檔名。
- 解壓縮時的 CPU 耗用量輕量,在低功耗行動裝置與路由器上也能流暢執行。
技術限制與缺點
- 僅支援單一檔案壓縮:若未先將多個檔案或目錄打包成 TAR 容器,則無法進行壓縮。
- 在現代網路文字上的壓縮率低於 Brotli 與 Zstandard 等現代演算法。
- 頁尾未壓縮大小欄位為 32 位元模 2^32,導致大於 4 GB 的檔案會發生循環顯示錯誤。
有趣的技術冷知識
- 選擇檔案簽章(magic bytes)0x1F 0x8B 的原因是歷史上 0x1F 是 Unix「compress」檔案的第一個位元組,而 0x8B 用來識別 Gzip。
- Gzip 仍然是壓縮網路回應的常見選擇;實際使用情況因網站與回應而異。
- Jean-loup Gailly 撰寫了壓縮程式碼,而 Mark Adler 撰寫了解壓縮 (inflate) 程式碼;兩人都獲得了 ACM 軟體系統獎。
常見技術問題
為什麼我無法使用 Gzip 壓縮資料夾?
Gzip 設計用於壓縮單一位元組串流。若要壓縮資料夾,Unix 系統會先將資料夾打包成單一 .tar 檔案,然後再用 Gzip 壓縮以建立 .tar.gz 檔案。
.gz 與 .zip 有何不同?
.zip 是一種封存格式,會將多個檔案連同目錄索引打包在一起。.gz 僅壓縮單一檔案,且在 Unix 系統上通常與 tar 搭配使用。
如何在 Windows 或 Mac 上解壓縮 .gz 檔案?
使用 File2File.app 直接在您的網頁瀏覽器中立即解壓縮 .gz 檔案,無須安裝任何軟體。