TAR.GZ 壓縮工具
完全在瀏覽器中將多個檔案或資料夾打包為 tar 後再用 gzip 壓縮,可按需下載 .tar.gz・.tgz・.tar(不壓縮)・.gz(單檔案)等多種格式。適合上傳到 Linux 伺服器。檔案內容絕不會上傳到伺服器。
什麼是 TAR.GZ 建立
TAR.GZ 建立是可把多個檔案或資料夾彙整為一個 tar.gz(或 tgz・tar・gz)檔案的工具。使用瀏覽器標準內建的 Compression Streams API,全部處理都在裝置內完成,檔案內容不會上傳至外部伺服器。即便是機密性較高的資料或含有個人資訊的檔案,也可安心壓縮。
輸出格式可從四種中選擇。.tar.gz 是先用 tar 彙整再以 gzip 壓縮的最常見格式,廣泛用於向 Linux 伺服器上傳與散布。.tgz 的內容與 .tar.gz 完全相同,只是副檔名較短的別名。.tar 為跳過壓縮的無壓縮格式,.gz 則不經 tar、直接壓縮單一檔案,可依用途區分使用。
TAR.GZ 建立的使用方式
- 新增檔案或資料夾 把檔案或資料夾拖放到放置區域,或透過「選擇檔案」「選擇資料夾」按鈕新增。
- 確認並輸入檔名 在輸入欄中確認所輸出壓縮檔的檔名,並視需要改為易於辨識的名稱。
- 選擇輸出格式 在 .tar.gz・.tgz・.tar・.gz 中選擇契合用途的格式。僅當檔案為1個時才可選擇 .gz。
- 建立壓縮檔並下載 按下「建立壓縮檔並下載」按鈕後,會在瀏覽器內執行壓縮處理並自動下載。
用好本工具的小技巧
- 整體拖入資料夾後,會保留原有的目錄結構打包進 tar。如果單獨選擇檔案,生成的壓縮包則沒有目錄結構,是扁平的。
- .tar.gz 與 .tgz 內容完全相同,只是副檔名不同。如果要提供給 npm 軟體包等要求 .tgz 副檔名的工具使用,請選擇 .tgz。
- 選擇".tar(不壓縮)"後會跳過 gzip 壓縮步驟。對於圖片、影片、ZIP 等本身已經壓縮過的檔案,壓縮前後體積幾乎不變,此時不壓縮反而處理更快。
- .gz 是不經過 tar、直接壓縮單個檔案的傳統格式。只有在僅需壓縮 1 個檔案(例如單個日誌檔案)時才能選擇。
- 打包大量檔案或體積很大的檔案時,由於處理過程佔用瀏覽器記憶體,可能會比較耗時,在某些環境下甚至會失敗。如果總體積達到數百 MB 至數 GB,建議分成幾批分別壓縮。
TAR.GZ 建立的應用情境
向 Linux 伺服器上傳前的準備
把網站或專案資料夾整體打包為 tar.gz,即可讓經由 SSH 的上傳與部署作業只需傳輸一個檔案。
準備 npm 形式的 .tgz 套件
可僅用瀏覽器,為像 npm 套件那樣以 .tgz 副檔名為前提的工具製作散布物,而無須使用專用 CLI。
日誌檔案的集中保管
把分散的每日日誌等彙整為一個 tar.gz,即可在保管或交接時減少檔案數量。
不經伺服器的多檔案交付
無須在郵件或聊天中附上多個檔案,可彙整為一個壓縮檔;而且壓縮處理全部在手邊裝置完成,適合不願把內容交給外部伺服器的場合。
保留資料夾結構的備份
整個資料夾拖放即可在保留原有階層結構的狀態下打包,適合希望原樣保存設定檔群等結構的情形。
用語集
- tar
- 用於把多個檔案彙整為一個(進行封存)的格式與指令。為 Tape ARchive 的縮寫,其本身不具備壓縮功能。
- gzip
- 用於壓縮資料的格式與指令。把 tar 彙整後的檔案用 gzip 壓縮即成為 tar.gz。
- .tgz
- 賦予與 .tar.gz 內容完全相同之壓縮檔的、較短別名的副檔名。是需要8字元以內檔名的舊環境遺留。
- PAX 標頭
- 因舊 tar 格式的檔名最多只能存放100位元組,為處理較長路徑而設計的擴充標頭。
- Compression Streams API
- 瀏覽器標準內建、可從 JavaScript 直接處理 gzip 等壓縮與解壓的 Web API。無須經過伺服器,僅在用戶端即可完成壓縮處理。
- ustar 格式
- 由 POSIX 標準化的 tar 標頭格式。檔名欄位被限制為100位元組,超出部分以 PAX 標頭補足。
常見問題
閒話 ― tar 的 512 位元組與 PAX 擴充套件頭
tar 這種檔案格式最初是為 20 世紀 70 年代的磁帶裝置(Tape ARchive)設計的,光是名字就帶著一股老式機房的氣息。也正因為脫胎於磁帶這種只能順序讀寫的介質,資料才會以 512 位元組為單位劃分成一個個"塊";如果檔案內容不是 512 位元組的整數倍,末尾就會補 0 填充,湊齊到下一個塊邊界。正是這種樸素又固執的結構,讓 tar 至今仍然是一種易於實現、又與流式處理天然契合的格式。
不過舊式的 ustar 格式頭部中,用於存放檔名的欄位只有短短 100 位元組,這在資料夾層級很深或名稱很長的今天很容易超標。為了繞開這個歷史遺留的限制,人們後來設計出了 PAX 擴充套件頭:在正式條目之前插入一個特殊的塊,專門用來記錄"真正的檔名",從而變相突破了原本 100 位元組的天花板。本工具在遇到超過 100 位元組的路徑時,也會自動附加 PAX 擴充套件頭,確保長路徑不會被截斷。
與 ZIP 不同,tar 和 gzip 的組合並沒有密碼保護機制,這其實是兩者"各司其職"的設計哲學所致——tar 只負責"打包",gzip 只負責"壓縮",誰都沒有把加密這件事納入自己的職責範圍。如果需要分發機密性較高的檔案,建議改用支援加密的姊妹工具 ZIP 壓縮工具。