這四種工具處理的是單一資料流,不像 tar 會保存整個目錄結構。資料夾通常先用 tar 打包,再交給 gzip、xz 或 zstd 壓縮。
動手前:有些指令預設會用壓縮檔取代原檔。正式資料先複製到測試目錄,或使用 keep/stdout 模式;不要只靠副檔名判斷檔案內容。
gzip 與 gunzip
壓縮單一檔案Linux/macOS
gzip report.log成功後通常留下 report.log.gz,原檔會被移除。
壓縮並保留原檔GNU gzip
gzip --keep report.logmacOS 內建 gzip 版本可能沒有 --keep,可改用 stdout。
用 stdout 壓縮並保留原檔Linux/macOS
gzip -c report.log > report.log.gz-c 把結果送到標準輸出,原檔不變。
解開 .gzLinux/macOS
gunzip report.log.gz通常會還原成 report.log 並移除 .gz。
解開但保留 .gzLinux/macOS
gzip -dc report.log.gz > report.log先確認 report.log 不存在,避免 > 覆蓋舊檔。
測試 gzip 完整性Linux/macOS
gzip -t report.log.gz && echo 'gzip OK'只測壓縮資料結構,不代表內容符合業務需求。
查看 gzip 壓縮資訊GNU gzip
gzip -l report.log.gz顯示壓縮前後大小與比例。
選擇速度優先Linux/macOS
gzip -1 -c report.log > report.fast.gz-1 較快、壓縮率較低;適合臨時傳輸。
選擇壓縮率優先Linux/macOS
gzip -9 -c report.log > report.small.gz-9 較慢,先評估 CPU 與處理時間。
bzip2 與 xz
bzip2 壓縮並保留原檔Linux/macOS
bzip2 -k database.sql產生 database.sql.bz2;-k 保留來源。
解開 bzip2 並保留壓縮檔Linux/macOS
bzip2 -dk database.sql.bz2如果目的檔已存在會拒絕或詢問,依版本而異。
測試 bzip2 完整性Linux/macOS
bzip2 -t database.sql.bz2結束碼 0 才代表壓縮資料通過測試。
xz 壓縮並保留原檔Linux/macOS
xz -k disk-image.raw產生 .xz;大型檔案壓縮前先看磁碟空間。
解開 xz 並保留壓縮檔Linux/macOS
xz -dk disk-image.raw.xz-d 解壓、-k 保留來源。
查看 xz 檔案資訊Linux/macOS
xz --list disk-image.raw.xz可先看未壓縮大小與記憶體需求。
測試 xz 完整性Linux/macOS
xz --test disk-image.raw.xz只做完整性檢查,不輸出內容。
zstd
zstd 壓縮並保留原檔Linux/macOS(需安裝)
zstd --keep backup.sqlzstd 通常兼顧速度與壓縮率。
zstd 解壓並保留壓縮檔Linux/macOS(需安裝)
zstd -d --keep backup.sql.zst目的檔已存在時不要直接加 --force。
zstd 測試完整性Linux/macOS(需安裝)
zstd --test backup.sql.zst適合傳輸後先驗檔。
zstd 多執行緒壓縮Linux/macOS(需安裝)
zstd -T0 --keep large-file.bin-T0 會使用可用核心;共用主機要評估 CPU 影響。
怎麼確認有做對
- 先用 file <檔案> 確認實際格式。
- 使用各工具的 test 模式檢查壓縮資料。
- 重要檔案另算 SHA-256,傳輸前後比對。
常見錯誤
- 把資料夾直接交給 gzip;gzip 本身不保存目錄樹。
- 忘記工具預設可能移除原檔。
- 用 > 輸出時覆蓋既有同名檔案。
- 在共用主機把壓縮等級或執行緒開滿,拖慢線上服務。
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。