TAR 檔案格式

tar 歸檔格式提供了一種可靠的文件儲存方式。它逐字節保留原始數據,並在開頭添加 512 位元組的標頭。檔案大小也進行了調整,以完全適合 512 位元組的區塊。有趣的是,標頭包含用於錯誤檢測的內建校驗和。雖然標準 tar 實用程式可能會跳過損壞的標頭(以及相關的檔案),但它將繼續處理存檔的其餘部分,確保您仍然可以存取未損壞的檔案。

關於 TAR 檔案資訊

tar 檔案格式是「磁帶歸檔」的縮寫,由 UNIX 系統中的 tar 實用程式所建立。它用作將文件捆綁在一起以執行備份或分發等任務的存檔。與壓縮存檔格式不同,tar 檔案以未壓縮格式儲存多個檔案(也稱為 tarball)以及有關存檔的元資料。雖然 tar 檔案本身未壓縮,但可以使用 gzip 或 bzip2 等實用程式對其進行壓縮,以實現高效儲存和傳輸。
由於 tar 檔案格式本身不包含內建壓縮,因此 tar 檔案通常使用外部實用程式進行壓縮,例如 gzip、bzip2、XZ(利用 7-Zip / p7zip LZMA / LZMA2 壓縮演算法)、Brotli、Zstandard和類似的工具。這種壓縮有助於減小存檔的大小,以便更輕鬆地移植和高效的資料備份。此過程產生的壓縮檔案可能具有單一副檔名,如 tgz、tbz、txz、tzst,或雙副檔名,如 tar.gz、tar.br、tar.bz2、tar.xz、tar.zst。

TAR 檔案格式的演變

tar 歸檔格式隨著時間的推移而不斷發展。 自 20 世紀 80 年代以來,tar 實用程式中添加的新功能導致了格式擴展,其中包括用於改進功能的附加資訊。早期的 tar 格式在數位欄位的儲存方式方面缺乏一致性,但在後來的版本中解決了這個問題以增強可移植性。這項改進始於 1988 年針對 tar 格式的第一個 POSIX 標準。這種格式是最靈活的,結合了其他 tar 規範的功能。它允許供應商使用標籤添加自訂功能。 雖然文件強調並非所有 tar 實作都可以完美處理這種格式,但其設計確保任何能夠讀取「ustar」檔案的工具也可以讀取大多數「posix」檔案。此外,POSIX.1 2001 消除了先前對 tar 檔案的 8 GB 檔案大小限制。

結構式

TAR 歸檔檔案的核心是一系列資料區塊。這些固定大小的區塊 512 位元組 每個都線性排列。為了標記存檔的結尾,有兩個連續的區塊用零填充。
然而,從邏輯上看,TAR 歸檔文件是一系列文件條目。每個條目由多個區塊組成,第一個區塊始終是條目標頭。其餘區塊儲存實際文件內容。
條目標題內部
條目標題可作為存檔中每個檔案的藍圖。它包含以下資訊

  • 檔案名稱(100 位元組):儲存在此條目中的檔案的名稱。
  • 檔案權限(8 位元組):存取檔案的權限,表示為八進位字串。
  • 擁有者 ID(8 位元組):檔案擁有者的數字使用者 ID(八進位格式)。
  • 群組 ID(8 位元組):檔案擁有者的數字群組 ID(八進位格式)。
  • 檔案大小(12 位元組):八進位格式的檔案大小。
  • 上次修改時間(12 位元組):上次檔案修改的八進位時間戳記。
  • 校驗和(8 位元組):用於驗證標頭資料完整性的校驗和值。
  • 檔案類型(1 個位元組):指示儲存的檔案類型(常規檔案、硬連結或符號連結)。
  • 連結檔案名稱(可變長度):如果條目是連結(硬連結或符號連結),則此欄位儲存連結檔案的名稱。

這種格式的好處

  • 多功能性 - TAR 是一種多功能格式,能夠在單一存檔檔案中儲存多個檔案和目錄,使其適合各種備份和分發需求。
  • 保留檔案屬性 TAR 保留重要的檔案屬性,例如權限、所有權和時間戳,確保存檔資料保持其完整性和可用性。
  • 簡單 - TAR 檔案的結構簡單明了,使其易於使用和處理。這簡化了與 TAR 存檔相關的任務的程式設計和自動化。

h2: 這種格式的好處

TAR 存檔支援的操作

Aspose.ZIP 允許使用者提取特定條目或整個存檔。對於 Aspose.ZIP for .NET 您可以使用 TarArchiveClass 開啟 .tar.gz 文件,然後迭代其條目,將它們提取到所需位置。對於 Aspose.ZIP for Java 類似的方法使用 TarArchive 開啟 .tar.gz 檔案並提取條目。

TAR 檔案 - 內部結構

段文件儲存有關段的原始資料。雖然存在不同的段類型,但 TAR 檔案僅區分資料段和批量段。批量段直接「原樣」保存在 TAR 檔案中。
但是,會檢查資料段以尋找其他段或原始二進位內容的參考。這些引用只是作為唯一識別碼 (UUID) 清單儲存在資料段中。引用的段可以位於目前 TAR 檔案內或外部。
透過檢查 TAR 檔案的索引可以找到內部引用。外部引用需要外部工具來定位另一個 TAR 檔案中的段。資料段中引用的段列表儲存在圖形檔案中,以便更快檢索。此列表保持有序以優化搜尋過程。

TAR 檔案 - 內部結構

內部檔案結構

  • 檔案元資料 - 與 tar 檔案類似,每個檔案都儲存修改時間和權限等基本資訊。但是,此部分很靈活,允許根據您的需求省略或包含其他詳細信息,例如存取控制清單 (ACL) 或擴充屬性 (EA)。建議為常規檔案包含強大的雜湊函數(如 SHA1)以確保資料完整性。
  • 多個內容流 - 與傳統存檔不同,檔案的內部資料檔案內可以有多個資料流。這對於儲存與檔案關聯的擴充屬性或資源分支非常有用。
  • 標頭 - 內部索引檔案保存檔案標頭,鏡像那些分散在內部資料檔案中的標頭。但是,當單獨儲存時,索引標頭必須引用資料檔案中對應資料的起始位置。此外,索引中的目錄條目列出了它們所包含的檔案以及它們在內部檔案索引中的相應偏移量。
  • 重複元資料的基本原理 - 這種設計選擇確保了高效的資料流/解碼和隨機檔案存取。此外,元資料壓縮良好,從而將儲存開銷降至最低。測試顯示元資料通常佔用不到 0.3% 的儲存空間,因此這種權衡是值得的。
  • 區塊頭 - 區塊頭與外部檔案類似,包含區塊大小資訊和唯一識別碼序列。

使用 TAR 的範例

Aspose.ZIP API 允許在您的應用程式中提取檔案,而不需要任何其他第三方應用程式。 Aspose.ZIP API 提供 TarArchive 類別來處理 TAR 檔案。

Add entries to existing TAR archive via C#

All you need to do is open archive for extraction and add entry to archive .

    using (TarArchive archive = new TarArchive(existing.tar))
    {
        archive.CreateEntry("one_more.bin", data.bin);
        archive.Save(added.tar);
    }

Delete entries from existing TAR archive via .net

Entries of tar archive can be deleted with similar DeleteEntry methods.

using (var archive = new TarArchive("two_files.tar"))
{
    archive.DeleteEntry(0);
    archive.Save("single_file.tar");
}

Add files to TAR archive without compression

Tar is a file archival format used to group multiple files and directories into a single archive file without compression , unlike formats like ZIP, RAR and others. To create a tar archive without specifying any compression settings, simply use a TarArchive instance.

    using (FileStream tarFile = File.Open("joint.tar", FileMode.Create))
    {
        FileInfo fi1 = new FileInfo("text.txt");
        FileInfo fi2 = new FileInfo("picture.png");
        using (TarArchive archive = new TarArchive())
        {
            archive.CreateEntry("text.txt", fi1);
            archive.CreateEntry("picture.png", fi2);
            archive.Save(tarFile);
        }
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

有關 TAR 檔案的附加信息

人們一直在問

1. 什麼是 TAR 存檔?

TAR 檔案是 Tape Archive 的縮寫,是一種檔案格式,用於將多個檔案和目錄捆綁到單一檔案檔案中而不進行壓縮。它通常用於基於 Unix 的系統中的備份和分發目的。

2. TAR 檔案有哪些好處?

TAR 具有通用性,它與大多數作業系統和存檔程式相容,促進跨不同平台的無縫資料共享和交換。它的簡單性在於 TAR 檔案的簡單結構,可以輕鬆建立、擷取和操作文件。此外,TAR 透過允許使用 gzip 或 bzip2 等外部工具進行壓縮來提高效率,使用戶能夠在資料傳輸過程中減少檔案大小並節省儲存空間和頻寬。

3. TAR 檔案有哪些限制?

雖然 TAR 是一種通用文件格式,通常用於在基於 Unix 的系統中歸檔和分發文件,但它確實有一些需要注意的限制。首先,TAR 缺乏內建壓縮功能,這意味著您需要 gzip 或 bzip2 等其他工具來減少檔案大小。其次,TAR 檔案不提供本機加密功能,因此如果您需要資料安全,則必須依賴外部工具進行密碼保護。最後,TAR 對保留原始檔案的時間戳記和權限等檔案屬性的支援有限,這可能會影響存檔資料的完整性。