Linux 下檔案打包與壓縮是日常運維的基本功。面對 .tar、.gz、.bz2、.xz、.zip、.7z、.zst 等多種格式,掌握統一的操作模式與核心參數,能讓您從容應對各種場景。本文提供最完整的命令速查表與最佳實踐建議。
tar),不改變資料大小gzip/bzip2/xz 等)tar 打包,再管道或參數壓縮(.tar.gz、.tar.xz 等)# 四大核心動作(互斥)
-c --create 建立新檔案
-x --extract 解壓縮/提取
-t --list 列出內容
-r --append 追加檔案到既有歸檔
-u --update 只追加比歸檔中新的檔案
# 常用修飾參數
-f --file=FILE 指定歸檔檔案名(必須)
-v --verbose 顯示過程
-z --gzip 透過 gzip 壓縮/解壓
-j --bzip2 透過 bzip2 壓縮/解壓
-J --xz 透過 xz 壓縮/解壓
--zstd 透過 zstd 壓縮/解壓
-C --directory=DIR 切換到指定目錄操作
--strip-components=N 提取時去除前 N 級目錄
--exclude=PATTERN 排除模式
--wildcards 配合 --exclude 使用萬用字元
| 操作 | 命令 | 說明 |
|---|---|---|
| 打包目錄(無壓縮) | tar -cf archive.tar dir/ | 純打包,速度最快 |
| 解包 | tar -xf archive.tar | 自動偵測壓縮格式 |
| gzip 壓縮打包 | tar -czf archive.tar.gz dir/ | 速度快、相容性最好 |
| 解壓 .tar.gz | tar -xzf archive.tar.gz | 自動解壓 |
| bzip2 壓縮打包 | tar -cjf archive.tar.bz2 dir/ | 壓縮率較高,速度較慢 |
| 解壓 .tar.bz2 | tar -xjf archive.tar.bz2 | |
| xz 壓縮打包 | tar -cJf archive.tar.xz dir/ | 壓縮率最高,CPU 佔用高 |
| 解壓 .tar.xz | tar -xJf archive.tar.xz | |
| zstd 壓縮打包 | tar --zstd -cf archive.tar.zst dir/ | 速度快、壓縮率高,現代首選 |
| 解壓 .tar.zst | tar --zstd -xf archive.tar.zst | 需 tar 1.31+ 支援 |
| 列出內容不解壓 | tar -tf archive.tar.gz | 快速預覽 |
| 指定目錄解壓 | tar -xf archive.tar -C /target/dir | |
| 去除前 1 級目錄 | tar -xf archive.tar --strip-components=1 | 避免建立頂層目錄 |
| 排除特定檔案 | tar -czf backup.tar.gz --exclude='*.log' --exclude='node_modules' dir/ |
# 壓縮(保留原檔案需 -k)
gzip file.txt # 產生 file.txt.gz,刪除原檔
gzip -k file.txt # 保留原檔
gzip -9 file.txt # 最高壓縮等級(1-9,預設 6)
# 解壓
gunzip file.txt.gz # 等同 gzip -d
zcat file.txt.gz # 標準輸出查看內容,不解壓檔案
bzip2 file.txt # 產生 file.txt.bz2
bzip2 -k file.txt # 保留原檔
bunzip2 file.txt.bz2 # 解壓
bzcat file.txt.bz2 # 標準輸出查看
xz file.txt # 產生 file.txt.xz(LZMA2,壓縮率極高)
xz -k -T0 file.txt # 多執行緒(0=自動核心數)
unxz file.txt.xz
xzcat file.txt.xz
zstd file.txt # 預設等級 3,速度極快
zstd -19 file.txt # 高壓縮等級(1-19,預設 3)
zstd -T0 file.txt # 多執行緒
unzstd file.txt.zst
zstdcat file.txt.zst
# 壓縮目錄(-r 遞歸)
zip -r archive.zip dir/
zip -r -9 archive.zip dir/ # 最高壓縮
# 加密
zip -e secret.zip secret.txt
# 解壓
unzip archive.zip
unzip -l archive.zip # 列出內容
unzip -d /target archive.zip # 指定目錄
# 安裝:p7zip-full / p7zip
7z a archive.7z dir/ # 建立
7z a -t7z -m0=lzma2 -mx=9 archive.7z dir/ # 最高壓縮
7z x archive.7z # 解壓(保留目錄結構)
7z l archive.7z # 列出內容
# 解壓
unrar x archive.rar
# 壓縮(需專有 rar 程式)
rar a archive.rar dir/
# 安裝
# CentOS: yum install zstd
# Ubuntu: apt install zstd
# 壓縮等級 1-19(預設 3,平衡速度/壓縮率)
zstd -3 file.tar # 快速,預設
zstd -19 file.tar # 最高壓縮,接近 xz -9
zstd --fast=10 file.tar # 極速模式(1-1000)
# 多執行緒(自動偵測核心數)
zstd -T0 file.tar
# 管道流式處理
tar -cf - /data | zstd -T0 -3 > backup.tar.zst
zstdcat backup.tar.zst | tar -xf - -C /restore
| 場景 | 推薦格式 | 理由 |
|---|---|---|
| Linux 系統備份/日誌歸檔 | .tar.zst / .tar.gz | zstd 速度快、壓縮率高;gz 相容性最好 |
| 軟體發布/原始碼分發 | .tar.xz / .tar.gz | xz 壓縮率最高,適合下載分發;gz 相容性最好 |
| Windows/Linux 跨平台交換 | .zip / .7z | 原生支援無需額外工具 |
| 極致壓縮率(備份存儲) | .7z / .tar.xz | 7z LZMA2、xz LZMA2 壓縮率最高 |
| 高頻備份/即時同步 | .tar.zst | zstd 速度極快,支援多執行緒,現代首選 |
| 單檔案快速壓縮 | .zst / .gz | zstd 單檔壓縮速度極快 |
# xz 多執行緒
xz -T0 file.tar
# zstd 多執行緒
zstd -T0 file.tar
# pigz(平行 gzip)
pigz -p $(nproc) file.tar
# pbzip2(平行 bzip2)
pbzip2 -p$(nproc) file.tar
# 備份
tar -cf - /data --exclude='*.log' | zstd -T0 -3 | ssh user@backup "cat > backup.tar.zst"
# 還原
ssh user@backup "cat backup.tar.zst" | zstd -d | tar -xf - -C /restore
# 建立 1GB 分卷
tar -cf - /data | split -b 1G - backup.tar.zst.part.
# 還原
cat backup.tar.zst.part.* | zstd -d | tar -xf -
# 建立校驗和
sha256sum backup.tar.zst > backup.sha256
# 驗證
sha256sum -c backup.sha256
# 最常用三組合(覆蓋 95% 場景)
tar -czf archive.tar.gz dir/ # gzip:快、通用
tar -cJf archive.tar.xz dir/ # xz:高壓縮率
tar --zstd -cf archive.tar.zst dir/ # zstd:快且強,現代首選
# 解壓通殺(現代 tar 自動偵測)
tar -xf archive.tar.gz
tar -xf archive.tar.xz
tar -xf archive.tar.zst
tar -xf archive.7z
tar -xf archive.zip
Linux 壓縮工具豐富多樣,核心在於理解打包與壓縮分離的設計哲學。現代環境強烈推薦 zstd(.tar.zst) 作為預設選擇:壓縮速度接近 gzip,壓縮率接近 xz,支援多執行緒,是當前最佳平衡點。跨平台交換首選 .zip 或 .7z。建議建立個人別名:
alias targz='tar -czf'
alias tarxz='tar -cJf'
alias tarzst='tar --zstd -cf'
alias untar='tar -xf'
將壓縮解壓操作內化為肌肉記憶,讓檔案管理輕鬆高效。