Tar Gzip 壓縮封存檔 (.tar.gz)
POSIX.1 標準Tar Gzip(.tar.gz,也稱為 .tgz)結合了 TAR 封存與 Gzip 壓縮,常用於軟體散布與檔案封裝。
檢查與中繼資料
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 TAR.GZ 檔案:
位元組層級標頭簽章(檔案簽章)
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 TAR.GZ 檔案:
十六進位簽章(偏移量 0):
1F 8B 08ASCII 表示法: ..\x08
標準化: POSIX.1 ustar(RFC 1952 gzip 包裝)
技術規格
| 容器架構 | 包裝在 RFC 1952 Gzip 壓縮容器中的 POSIX ustar / GNU tar 封存串流 |
| 壓縮 | 兩階段封裝:先進行 TAR 序列化,再進行 DEFLATE 壓縮 |
| 位元組序 | 包裹八進位 POSIX tar 區塊的小端序 gzip 封套 |
| 色彩空間 | 不適用(封存容器) |
| 色版與結構 | 多檔案 Unix 目錄樹、符號連結、檔案擁有者與權限位元 |
| 最大尺寸 | 無限制的串流封存大小 |
| 透明度 | 無損檔案資料;中繼資料的保留取決於封存格式與解壓縮設定 |
| 串流與漸進式 | 端到端可管線化串流:在單次處理中同時完成解壓縮與解開 |
技術比較矩陣:TAR.GZ 對比競爭格式
| 技術屬性 | TAR.GZ (目前) | ZIP | 7Z | TAR.BZ2 |
|---|---|---|---|---|
| Unix 權限 | 儲存由封存檔與解壓縮工具支援的 POSIX 中繼資料 | 有限 / 通常會遺失 | 保留基本屬性 | 支援解壓縮工具所選的 POSIX 中繼資料 |
| 壓縮率 | 中等(Gzip DEFLATE) | 中等(ZIP DEFLATE) | 非常高(LZMA2) | 高(Bzip2 BWT) |
| 解壓縮速度 | 快速(約 300 MB/s) | 快速(約 300 MB/s) | 中等(約 100 MB/s) | 慢速(約 40 MB/s) |
| Linux 生態系統標準 | 常見於開源封裝 | 消費者桌面預設值 | Windows 愛好者首選 | 舊版 Linux 原始碼發布 |
常見損壞模式與十六進位修復指南
命令列回報「gzip: stdin: invalid compressed data--format violated」(壓縮資料無效,違反格式)。
根本原因: Gzip 封套中的損壞位元組或下載不完整。
修復: 嘗試使用 File2File.app 封存解壓縮工具或「tar -izxf broken.tar.gz」進行部分復原。
安全性分析與解析器攻擊向量
如果不小心解壓縮,TAR.GZ 封存檔會同時結合壓縮炸彈與目錄穿越攻擊的風險。
已知攻擊向量
- 類似 Zip 炸彈的放大效果,微小的 .tar.gz 檔案會展開成數 TB 全為零的資料。
- 目錄穿越(例如「../../root/.ssh/authorized_keys」)以覆寫具權限的檔案。
- 在以 root 身分解壓縮時建立惡意裝置節點。
防禦最佳實務: 以無特權的使用者身分解壓縮檔案,並對所有目標檔案路徑進行檢查與過濾以防止目錄穿越。
歷史起源與里程碑
2015Docker 容器散布架構將分層的 .tar.gz rootfs 映像檔標準化。
1996IETF 將底層的 Gzip 規格標準化為 RFC 1952。
1993GNU tar 新增了整合的「tar -z」選項,使 .tar.gz 成為封裝檔案的便利工具。
主要優勢與優點
- 軟體專案經常將原始碼封存發布為 .tar.gz,因為 TAR 可以群組目錄樹,而 Gzip 可以壓縮串流。
- 一個 .tar.gz 可以在 TAR 層記錄權限與符號連結。還原方式取決於解壓縮工具與目標作業系統,因此在不同平台上解開後請檢查權限。
- 完全可串流:可透過網路管線下載、解壓縮與解開,而無需將暫存檔案寫入磁碟。
技術限制與缺點
- 解開單一檔案需要解壓縮直到該檔案位置為止的整個封存檔。
- 壓縮率低於 .tar.xz 或 .tar.zst 等現代替代格式。
- 在舊版 Windows 系統上不如廣泛支援的 .zip 格式直觀。
有趣的技術冷知識
- 在具有 8.3 檔名限制的 MS-DOS 系統上,「.tar.gz」被縮寫為「.tgz」。
- 每次執行「npm install」時,npm 都會在幕後下載並解壓縮 .tgz (tar.gz) 套件。
- Linux 使用者通常透過助憶法「eXtract Ze File」來記住解壓縮 tar.gz 檔案的指令:tar -xzf file.tar.gz。
常見技術問題
.tar.gz 與 .zip 之間有什麼區別?
.zip 會使用中央目錄來儲存檔案,而 .tar.gz 則是在 Gzip 中包裝 TAR 串流。中繼資料的保留取決於壓縮檔與解壓縮設定。
.tgz 和 .tar.gz 是一樣的嗎?
是的。.tgz 只是 .tar.gz 的簡短 3 個字元副檔名,最初是為了支援 DOS 等具有 8.3 短檔名限制的作業系統而建立的。
如何在 Windows 上解壓縮 .tar.gz 檔案?
您可以直接在網頁瀏覽器中使用 File2File.app 解壓縮 .tar.gz 檔案,無須安裝 WinRAR 或 7-Zip。