數據壓縮是存儲傳輸的基礎技能。Linux 下 zip、tar、tar.gz、tar.bz2 四大主流格式各有優勢,本文系統整理核心命令、參數解析、壓縮率對比、跨平台兼容性,助你按場景精準選型。
| 格式 | 算法 | 壓縮率 | 速度 | 跨平台 | 典型場景 |
|---|---|---|---|---|---|
| zip | Deflate | 中 | 快 | ★★★★★ (Win/Mac/Linux 原生) | 與 Windows 用戶交換文件、簡單打包 |
| tar | 無(僅打包) | 無 | 極快 | ★★★★☆ (Linux 標準,Win 需工具) | 大量小文件聚合、備份前打包 |
| tar.gz | gzip (LZ77) | 高 | 快 | ★★★★☆ (Linux 標準,Win 需工具) | Linux 間傳輸、日志歸檔、源碼發布 |
| tar.bz2 | bzip2 (BWT) | 最高 | 慢 | ★★★☆☆ (Linux 標準,Win 需工具) | 長期存檔、極限壓縮、軟件包發布 |
| tar.xz | LZMA2 | 極高 | 極慢 | ★★★☆☆ | 內核源碼、大型軟件包發布(現代首選) |
# 壓縮目錄(-r 遞歸)
zip -r archive.zip dir/
# 壓縮文件
zip archive.zip file1 file2
# 解壓到當前目錄
unzip archive.zip
# 解壓到指定目錄
unzip archive.zip -d /target/path
# 查看壓縮包內容不解壓
unzip -l archive.zip
# 打包
tar -cvf archive.tar dir/
# 解包到當前目錄
tar -xvf archive.tar
# 解包到指定目錄
tar -xvf archive.tar -C /target/path
# 只查看內容
tar -tvf archive.tar
# 壓縮
tar -zcvf archive.tar.gz dir/
# 解壓
tar -zxvf archive.tar.gz
# 指定解壓目錄
tar -zxvf archive.tar.gz -C /target/path
# 壓縮
tar -jcvf archive.tar.bz2 dir/
# 解壓
tar -jxvf archive.tar.bz2
# 指定解壓目錄
tar -jxvf archive.tar.bz2 -C /target/path
# 壓縮
tar -Jcvf archive.tar.xz dir/
# 解壓
tar -Jxvf archive.tar.xz
c:Create 創建x:eXtract 解壓v:Verbose 顯示過程f:File 指定文件名(必須緊跟文件名)z:gzip / j:bzip2 / J:xzC:Change directory 解壓目標目錄t:lisT 列表內容# 壓縮並分卷,每卷 100MB
tar -zcvf - large_dir/ | split -b 100M - archive.tar.gz.
# 合併解壓
cat archive.tar.gz.* | tar -zxvf -
tar -zcvf archive.tar.gz --exclude='*.log' --exclude='node_modules' dir/
tar -zcvpf archive.tar.gz dir/ # p 保留權限、擁有者、時間戳
# 本地打包通過 SSH 遠程解包
tar -zcvf - /src/dir | ssh user@remote "tar -zxvf - -C /dst/dir"
# 遠程打包直接下載
ssh user@remote "tar -zcvf - /src/dir" | tar -zxvf - -C /local/dir
# pigz (並行 gzip)
tar -cvf - dir/ | pigz -p 8 > archive.tar.gz
# pbzip2 (並行 bzip2)
tar -cvf - dir/ | pbzip2 -p 8 > archive.tar.bz2
# 解壓同理
pigz -dc archive.tar.gz | tar -xvf -
tar 打包再壓縮,減少 inode 開銷-p 參數