一、Linux 常見壓縮軟件概覽 🧩
在 Linux 下,壓縮通常分兩步:
1)把很多文件打包成一個歸檔;2)對歸檔進行壓縮。
常用工具主要有:<font color="red">tar、gzip、bzip2、xz、zip、7z、zstd</font> 等。
二、常見壓縮工具對比表 📊
| 工具 | 文件後綴 | 典型用途 | 壓縮率 | 速度(相對) | 特點概述 |
|---|---|---|---|---|---|
| <font color="red">tar</font> | .tar |
打包多個文件/目錄(本身不壓縮) | 無 | 很快 | 歸檔工具,常與 gzip/xz 等組合 |
| <font color="red">gzip</font> | .gz / .tar.gz |
日誌壓縮,通用場景 | 中等 | 較快 | 歷史久、兼容性好 |
| <font color="red">bzip2</font> | .bz2 / .tar.bz2 |
對壓縮率有要求的場景 | 高 | 較慢 | 壓縮率比 gzip 高 |
| <font color="red">xz</font> | .xz / .tar.xz |
發行包、源碼包壓縮 | 很高 | 較慢 | 壓縮率優秀,CPU 佔用偏高 |
| <font color="red">zip</font> | .zip |
跨平台傳輸,與 Windows 兼容 | 中等 | 中等 | 單文件即可解壓,含目錄結構 |
| <font color="red">7z</font> | .7z |
極高壓縮率需求 | 很高 | 中等 | 功能豐富,支持多種算法 |
| <font color="red">zstd</font> | .zst / .tar.zst |
現代服務器、軟件包壓縮 | 高 | 很快 | 壓縮率與速度兼顧,現代發行版廣用 |
三、tar:Linux 歸檔核心工具
1. 打包並使用 gzip 壓縮
tar -czvf backup.tar.gz /data
解釋:
tar:歸檔命令,本身只負責“打包”。-c:創建新歸檔(create)。-z:通過 <font color="red">gzip</font> 壓縮(生成.gz)。-v:顯示詳細過程(verbose),方便查看當前打包到哪裏。-f backup.tar.gz:指定輸出文件名。/data:要打包的目錄或文件,可以是多個路徑。
2. 解壓 .tar.gz
tar -xzvf backup.tar.gz -C /tmp/recover
解釋:
-x:解包(extract)。-z:表示歸檔經過 gzip 壓縮。-C /tmp/recover:解壓到指定目錄,避免污染當前目錄。
四、gzip:經典壓縮工具
1. 壓縮單個文件
gzip access.log
解釋:
gzip access.log:將access.log壓縮為access.log.gz。- 壓縮後原文件會被替換,如需保留原文件可加
-k(部分版本支持):
gzip -k access.log
-k:保留原始文件(keep)。
2. 解壓 .gz 文件
gunzip access.log.gz
解釋:
gunzip:與gzip -d等價,用於解壓。- 解壓後生成原始文件
access.log。
五、bzip2 與 xz:追求更高壓縮率
1. 使用 bzip2 壓縮
bzip2 logs.tar
解釋:
- 將
logs.tar壓縮為logs.tar.bz2。 - 原始文件默認刪除,如需保留可使用
-k:
bzip2 -k logs.tar
2. 使用 xz 壓縮
xz -z -k backup.tar
解釋:
xz:高壓縮率工具,常用於.tar.xz格式。-z:壓縮(compress),默認行為,可省略。-k:保留原始文件backup.tar。- 輸出為
backup.tar.xz,壓縮率通常高於 gzip、bzip2。
六、zip/unzip:跨平台首選 📦
1. 創建 zip 壓縮包
zip -r project.zip project/
解釋:
zip:壓縮並打包為.zip文件。-r:遞歸處理目錄(包含子目錄)。project.zip:輸出文件名。project/:需要打包的目錄。
2. 解壓 zip
unzip project.zip -d /opt/project
解釋:
unzip:解壓.zip文件。-d /opt/project:指定解壓目標目錄。.zip內部通常包含完整目錄結構,適合在不同系統之間傳輸。
七、7z:高壓縮率與多格式支持
7z a archive.7z /data
解釋:
7z:命令行工具,使用 7-Zip 引擎。a:添加(add),表示創建壓縮包並加入文件。archive.7z:目標壓縮文件。/data:要壓縮的目錄。
7z 支持多種算法和格式,適合對壓縮率要求很高的場景。
八、zstd:現代高性能壓縮工具 ⚡
<font color="red">zstd(Zstandard)</font> 是近年來廣泛使用的壓縮算法,在很多現代發行版、容器鏡像和軟件包格式中都能看到 .zst 或 .tar.zst。它的目標是:在接近 xz 壓縮率的同時,提供接近或優於 gzip 的速度。
1. 基本壓縮命令
zstd logfile
解釋:
zstd logfile:將logfile壓縮為logfile.zst。- 默認壓縮級別通常為中等,兼顧速度與壓縮率。
2. 指定壓縮級別並保留原文件
zstd -k -19 database.dump
解釋:
-k:保留原始文件。-19:使用較高壓縮級別(數字越大壓縮越高,但越耗時、越佔 CPU)。- 輸出為
database.dump.zst,適合“寫一次,看很多次”的備份場景。
3. 解壓 .zst 文件
zstd -d backup.tar.zst
解釋:
-d:解壓(decompress)。- 解壓後得到
backup.tar,可再配合tar -xvf還原文件。
九、壓縮工作流程思維導圖(文字版)🧠
[確定需求]
├─ 需要最高壓縮率? → 選擇 <xz>/<7z>/<zstd高等級>
├─ 需要兼顧速度? → 選擇 <gzip>/<zstd默認>
├─ 需要跨平台? → 選擇 <zip>
└─ 只打包不壓縮? → 使用 <tar> 單獨歸檔
↓
[選擇工具與參數]
↓
[執行壓縮命令]
↓
[驗證壓縮包(解壓測試/校驗大小)]
↓
[投入正式使用或加入備份腳本]
十、實戰選型建議 ✅
- 備份大量文本日誌:優先考慮 <font color="red">gzip 或 zstd</font>,壓縮/解壓速度快。
- 發佈源碼包、系統鏡像:適合使用 <font color="red">tar.xz 或 tar.zst</font>,空間利用率高。
- 與 Windows 用户頻繁交換文件:使用 <font color="red">zip</font> 最方便。
- 對磁盤空間極度敏感:可嘗試 <font color="red">7z</font> 或高等級 <font color="red">zstd</font>。
掌握這些工具及其基本命令,就能在 Linux 中靈活選擇最適合自己的壓縮方案,讓備份、傳輸、部署都更加高效穩健 💼。