.tar.gz 檔案格式,也稱為 tarball 或 gzipped tar 檔案,是一種常用的檔案格式,用於將檔案和目錄打包並壓縮成單一檔案,以方便儲存和傳輸。它結合了 tar(磁帶檔案)格式來捆綁檔案和目 錄,並使用 gzip 壓縮來減小整體檔案大小。.tar.gz 格式廣泛用於類 Unix 作業系統,並受到各種歸檔工具和實用程式的支援。
tar 格式本身是檔案和目錄記錄的串接。每個記錄都包含有關檔案或目錄的元資料,例如其名稱、大小、權限、擁有權和修改時間戳記。實際檔案資料儲存在檔案中的元資料之後。Tar 檔案可以保留目錄結構、符號連結和其他特殊檔案類型。
要建立 tar 檔案,請使用 tar 實用程式。它會遞迴地遍歷指定的目錄或檔案清單,並產生一個包含所有檔案和目錄的單一 tar 檔案。產生的 tar 檔案具有 .tar 副檔名。tar 指令支援各種選項來控制檔案建立程序,例如指定輸出檔案名稱、排除某些檔案或目錄、保留權限和擁有權,以及處理符號連結。
雖然 tar 格式對於將檔案捆綁在一起很有用,但它本身並未提供任何壓縮。這正是 gzip 發揮作用的地方。Gzip 是一種流行的壓縮演算法,它使用 Lempel-Ziv 編碼 (LZ77) 來有效壓縮資料。它會分析輸入資料,並將重複的序列替換為對先前出現項目的參照,從而減小資料的整體大小。
要建立 .tar.gz 檔案,請將 tar 實用程式與 gzip 實用程式結合使用。首先,tar 實用程式會建立如前所述的 tar 檔案。然後,將產生的 tar 檔案透過 gzip 實用程式傳遞,後者會使用 gzip 演算法壓縮 tar 檔案。壓縮的輸出通常會給予 .gz 副檔名,產生 .tar.gz 檔案。
可以使用命令列選項調整 gzip 的壓縮等級。預設情況下,gzip 使用壓縮等級 6,這在壓縮比和速度之間取得了良好的平衡。較高的壓縮等級(最高 9)可能會產生較小的檔案大小,但壓縮時間可能會更長。較低的壓縮等級(最低 1)會優先考慮速度,而不是壓縮比。
要從 .tar.gz 檔案中提取檔案,請反轉此程序。首先使用 gzip 實用程式解壓縮檔案,這會還原原始的 tar 檔案。然後,使用 tar 實用程式從 tar 檔案中提取檔案和目錄。tar 指令支援選項來指定提取位置、保留權限和擁有權,以及處理符號連結。
.tar.gz 格式的一個優點是它在不同平台上的相容性。Tar 和 gzip 實用程式廣泛存在於類 Unix 系統上,許多其他作業系統提供處理 .tar.gz 檔案的工具。這使得在一個系統上建立檔案,並在另一個系統上提取它們變得方便,而不管底層架構或作業系統如何。
除了命令列實用程式之外,各種圖形工具和檔案壓縮程式都支援 .tar.gz 格式。這些工具通常提供使用者友善的介面,用於建立、提取和管理 .tar.gz 檔案,讓偏好圖形介面的使用者可以存取。
.tar.gz 格式有一些限制和考量因素。它不為檔案的檔案提供內建加密或密碼保護。如果安全性是一個問題,則需要與 .tar.gz 結合使用其他加密技術或工具。此外,gzip 達到的壓縮比可能會因被壓縮資料的類型而異。基於文字的檔案和具有重複模式的檔案往往可以很好地壓縮,而已經壓縮的檔案(例如圖像、影片)可能無法從進一步的 gzip 壓縮中獲得顯著的優點。
儘管有這些限制,.tar.gz 格式由於其簡潔性、相容性和在打包和壓縮檔案方面的有效性而仍然廣泛使用。它通常用於分發原始碼、軟體套件、備份檔案,以及透過網路或儲存媒體傳輸大量檔案集合。
總之,.tar.gz 檔案格式結合了 tar 格式來捆綁檔案和目錄,並使用 gzip 壓縮來建立壓縮的檔案檔案。它提供了一種方便且有效的方式來打包和壓縮檔案以進行儲存和傳輸,同時在不同系統之間保持相容性。了解 .tar.gz 格式及其相關工具對於在各種運算環境中管理和分發檔案非常有價值。
檔案壓縮透過 減少冗餘,讓相同的資訊佔用更少的位元。可壓縮的上限受資訊理論約束:對於無失真壓縮,上界是信源熵(參見香農的信源編碼定理以及他於 1948 年發表的《通信的數學理論》)。對於有失真壓縮,碼率與感知品質之間的權衡由率失真理論描述。
多數壓縮器分兩個階段。首先,模型會預測或揭露資料中的結構。接著,編碼器把這些預測轉成近乎最優的位元型態。經典的建模家族是 Lempel–Ziv:LZ77 (1977)及 LZ78 (1978) 會偵測重複子字串並輸出參照而非原始位元組。編碼面則由霍夫曼編碼(見原始論文1952)為較常出現的符號分配更短的碼字。算術編碼與範圍編碼再進一步逼近熵極限,而現代的非對稱數值系統(ANS)則用查表方式取得相似壓縮率。
DEFLATE(被 gzip、zlib 與 ZIP 採用)把 LZ77 和霍夫曼編碼結合。其規格完全公開:DEFLATERFC 1951、zlib 封裝RFC 1950以及 gzip 檔案格式RFC 1952。Gzip 針對串流設計並明確不提供隨機存取。PNG 影像則把 DEFLATE 規範為唯一的壓縮方式(視窗最多 32 KiB),詳見 PNG 規格「Compression method 0… deflate/inflate… at most 32768 bytes」與W3C/ISO PNG 第二版。
Zstandard (zstd): 針對高壓縮率與極快解壓而設計的通用壓縮器。格式記載於RFC 8878(以及HTML 鏡像)和 GitHub 上的參考規格文件。與 gzip 類似,基本框架並不追求隨機存取。zstd 的絕招是字典:從語料擷取的小樣本能大幅改善許多小型或相似檔案的壓縮(參閱python-zstandard 字典文件與Nigel Tao 的示例)。各實作同時支援「非結構化」與「結構化」字典(討論)。
Brotli: 為網頁內容(如 WOFF2 字體、HTTP)優化,結合靜態字典與類 DEFLATE 的 LZ+熵編碼核心。規格載於RFC 7932,文件同時指出滑動視窗為 2WBITS-16,WBITS 介於 [10, 24](1 KiB-16 B 至 16 MiB-16 B),並且不嘗試隨機存取。Brotli 常在網頁文字上優於 gzip,解碼也相當快速。
ZIP 容器: ZIP 是一種檔案封存格式,可存放使用多種壓縮法(deflate、store、zstd 等)的項目。權威規格是 PKWARE 的 APPNOTE(參見APPNOTE 入口、托管副本以及美國國會圖書館的概覽ZIP File Format (PKWARE)/ZIP 6.3.3)。
檔案壓縮是一個減少檔案或檔案群大小的過程,通常用於節省儲存空間或加速網路傳輸。
檔案壓縮運作原理,透過識別並移除數據中的冗餘資訊。它使用演算法將原始數據編碼在較小的空間裡。
兩種主要的檔案壓縮類型是無失真及有失真壓縮。無失真壓縮可以完美地恢復原始檔案,然而有失真壓縮在一些資料品質的損失下能得到更大的壓縮程度。
一個常見的檔案壓縮工具範例是WinZip,它支援多種壓縮格式包括ZIP與RAR。
在無失真壓縮中,質量保持不變。然而,在有失真壓縮中,可能會有顯著的質量下降,因為它刪除了一些較不重要的數據以便更大程度地減少檔案大小。
是的,相對於資料的完整性來說,檔案壓縮是安全的,尤其是無失真壓縮。然而,如同所有檔案,被壓縮的檔案也可能受到惡意軟體或病毒的攻擊,所以總是需要有專業的安全軟體以保護。
幾乎所有種類的檔案都可以被壓縮,包括文字檔案、圖像、音訊、視頻和軟體檔案。然而,壓縮程度可以因檔案類型而有顯著的不同。
ZIP檔是一種使用無失真壓縮以減少一個或多個檔案大小的檔案格式。在ZIP檔中的多個檔案被有效地打包為單一的檔案,這也讓分享變得更加容易。
技術上可行,儘管額外的大小減少可能非常小或甚至適得其反。壓縮一個已經壓縮過的檔案有時可能會增加其大小,原因在於壓縮演算法所增加的metadata。
解壓壓縮的檔案,通常需要一個解壓縮或解zip的工具,像是WinZip或7-Zip。這些工具可以从壓縮格式中提取原始檔案。