TAR 封存檔 (.tar)

POSIX.1-1988 標準

Tape Archive (TAR) 是一種廣泛使用的 Unix 與 Linux 打包格式,可將檔案、目錄與所選的檔案系統中繼資料結合成未壓縮的串流。

將 ZIP 轉換為 TAR

免費的瀏覽器端 ZIP 轉 TAR 轉換器。在您的裝置上即時轉換檔案。

檢查與中繼資料

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 TAR 檔案:

在這裡選擇或拖放檔案

私密 - 檔案絕不會離開您的裝置

或貼上 Ctrl+V
零網路傳輸隱私保證: 0 位元組上傳至外部伺服器。所有處理皆在本機瀏覽器沙箱中進行。

位元組層級標頭簽章(檔案簽章)

作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 TAR 檔案:

十六進位簽章(偏移量 257):

75 73 74 61 72

ASCII 表示法: ustar

標準化: POSIX.1-1988 (ustar) / POSIX.1-2001 (pax)

技術規格

容器架構512 位元組區塊序列:每個區塊包含 512 位元組的檔案標頭,後接向上補齊至 512 位元組的檔案資料,最後以兩個零區塊結束
壓縮未壓縮的封存檔容器(設計用於透過管線傳輸至 gzip、bzip2、xz 或 zstd)
位元組序八進位 ASCII 字串欄位;大端序數字擴充
色彩空間不適用(封存檔容器)
色版與結構Unix 檔案目錄樹、符號連結、硬式連結、字元/區塊裝置以及 FIFO 管線
最大尺寸傳統 ustar 格式有 8 GB 限制;現代 PAX 格式則實際上無限制
透明度儲存所選的檔案系統中繼資料(例如權限與擁有者 ID);保留的屬性取決於封存檔格式與實作方式
串流與漸進式循序串流導向設計:可直接寫入實體磁帶機

技術比較矩陣:TAR 對比競爭格式

技術屬性TAR (目前)ZIP7ZCPIO
原生壓縮無(純打包容器)內建 Deflate 壓縮內建 LZMA/LZMA2 壓縮無(純打包容器)
Unix 權限保留所選的 POSIX 屬性、符號連結、UID/GID有限的 Unix 權限支援保留基本權限所選的 POSIX 屬性
串流解壓縮完整的管線串流解壓縮需要讀取檔案結尾(EOF)處的中央目錄需要讀取結尾標頭完整的串流解壓縮
檔案隨機存取緩慢(線性循序掃描)即時(中央目錄查詢)中等(索引查詢)緩慢(線性循序掃描)

常見損壞模式與十六進位修復指南

解壓縮錯誤:「tar: Skipping to next header」(跳至下一個標頭)或「A lone zero block at X」(X 處有單獨的零區塊)。

根本原因: 受損的 512 位元組區塊對齊或串流過早終止。

修復: 使用「tar -i」進行解壓縮以忽略受損區塊,或使用 File2File.app Tar 工具進行修復。

安全性分析與解析器攻擊向量

TAR 解壓縮程式必須清理檔案路徑,以防範透過目錄穿越攻擊來覆寫任意檔案。

已知攻擊向量

  • 「Slip」目錄穿越(例如「../etc/passwd」),在解壓縮過程中覆寫關鍵系統檔案。
  • 符號連結競態條件,建立指向系統目錄的符號連結,接著進行檔案寫入。
  • 透過循環硬式連結迴圈造成阻斷服務。

防禦最佳實務: 嚴格清理封存檔檔案路徑,並拒絕任何包含父目錄參考(「..」)的項目。

歷史起源與里程碑

2001IEEE POSIX.1-2001 引入了 PAX (Portable Archive Interchange) 標準,打破了舊有的 8 GB 大小上限。
1988IEEE POSIX 將「ustar」(Unix Standard Tar)標頭格式標準化。
1979由貝爾實驗室在 Unix 第 7 版(V7)中引入,用於將檔案樹寫入磁帶機。

主要優勢與優點

  • TAR 可以記錄 Unix 權限、符號連結與擁有者 ID。請檢查解壓縮程式是否會還原這些欄位,特別是在 Windows 或其他具有不同權限規則的系統上解壓縮時。
  • 可串流的磁帶導向設計:可直接從網路管線解壓縮,而無需定位到檔案結尾。
  • Linux 套件管理程式與容器工具經常以 TAR 封存檔發布檔案,通常會壓縮為 .tar.gz 或 .tar.zst。

技術限制與缺點

  • 沒有原生壓縮功能:未壓縮的 .tar 檔案大小大約等於原始檔案的總和。
  • 隨機存取速度緩慢:從大型 tarball 的中間解壓縮單一檔案,需要從頭開始掃描。
  • 舊版 ustar 標頭會截斷超過 100 個字元的檔名(已在現代的 PAX/GNU tar 中解決)。

有趣的技術冷知識

  • 「ustar」檔案簽章(magic bytes)位於每個 512 位元組標頭區塊內部的第 257 個位元組位移處。
  • TAR 最初是為了實體控制 9 軌磁帶機而編寫的。
  • Docker 與 OCI 容器映像檔實際上是標準 .tar 封存檔的堆疊集合,其中包含了根檔案系統差異。

常見技術問題

為什麼我的 .tar 檔案沒有被壓縮?

TAR 僅是一個封存工具(它將多個檔案綑綁成一個檔案),本身並不會進行壓縮。若要進行壓縮,請將其與 gzip 搭配使用以建立 .tar.gz 檔案。

ustar 與 GNU tar 有什麼區別?

Ustar 是 1988 年的 POSIX 標準,檔名限制為 100 個字元;GNU tar 則是支援不限長度路徑與稀疏檔案的擴充格式。

如何在 Windows 上開啟 .tar 檔案?

Windows 10 與 11 透過命令列原生支援 tar(「tar -xf file.tar」),您也可以直接在網頁瀏覽器中使用 File2File.app,以圖形介面解壓縮。