Linux 下檔案格式眾多,掌握核心工具組合即可應對 99% 場景。本文整理 標準打包 (tar) + 壓縮 (gzip/bzip2/xz) 慣用組合、獨立壓縮工具、跨平台格式 (zip/rar/7z) 完整指令對照表。
tar:僅打包 (歸檔),不壓縮,輸出 .targzip/bzip2/xz:僅壓縮單一檔案tar + 壓縮工具 → .tar.gz / .tar.bz2 / .tar.xz| 格式 | 解壓/解包 | 壓縮/打包 | 備註 |
|---|---|---|---|
| .tar | tar xvf file.tar | tar cvf file.tar dir/ | 純打包 |
| .gz | gunzip file.gz / gzip -d file.gz | gzip file | 單檔壓縮 |
| .tar.gz / .tgz | tar zxvf file.tar.gz | tar zcvf file.tar.gz dir/ | 最通用組合 |
| .bz2 | bunzip2 file.bz2 / bzip2 -d file.bz2 | bzip2 -z file | 壓縮率較高 |
| .tar.bz2 | tar jxvf file.tar.bz2 | tar jcvf file.tar.bz2 dir/ | 原始碼發布常用 |
| .xz | unxz file.xz / xz -d file.xz | xz -z file | 最高壓縮率,核心套件用 |
| .tar.xz | tar Jxvf file.tar.xz | tar Jcvf file.tar.xz dir/ | 現代 Linux 發行版標準 |
| .zip | unzip file.zip | zip -r file.zip dir/ | 跨平台、支援加密 |
| .rar | unrar x file.rar / rar x file.rar | rar a file.rar dir/ | 需安裝非自由套件 |
| .7z | 7z x file.7z | 7z a file.7z dir/ | 最高壓縮率、開源 |
| .Z | uncompress file.Z | compress file | 舊 Unix 標準 |
| .rpm | rpm2cpio file.rpm | cpio -idmv | - | 提取不安裝 |
| .deb | ar p file.deb data.tar.xz | tar Jxvf - | - | 提取不安裝 |
c 建立新檔案
x 解壓/提取
v 顯示過程
f 指定檔案名 (必須最後)
z gzip 過濾
j bzip2 過濾
J xz 過濾
C 切換目錄後操作 (解壓至指定目錄)
--exclude=PATTERN 排除模式
--strip-components=N 去除前 N 級目錄
# 打包 /etc 至 /backup/etc.tar.gz
tar zcvf /backup/etc.tar.gz /etc
# 解壓至 /tmp/test (保留目錄結構)
tar zxvf /backup/etc.tar.gz -C /tmp/test
# 解壓並去除第一級目錄 (直接取內容)
tar zxvf /backup/etc.tar.gz --strip-components=1 -C /tmp/test
# 排除日誌目錄
tar zcvf backup.tar.gz /var/www --exclude='*/logs/*'
# 分卷壓縮 (適合大檔案傳輸)
tar zcvf - /data | split -b 100M - backup.tar.gz.
# 合併還原
cat backup.tar.gz.* | tar zxvf -
zip -r file.zip dir/ # 遞歸
zip -e file.zip dir/ # 加密 (提示輸入密碼)
zip -P password file.zip dir/ # 指定密碼 (不安全,僅腳本用)
zip -9 file.zip dir/ # 最大壓縮
zip -u file.zip new_file # 更新模式 (只增量)
zip -d file.zip old_file # 從壓縮包刪除檔案
# atool (apt/yum install atool)
aunpack file.tar.gz # 自動識別格式解壓
apack file.tar.gz dir/ # 自動識別格式打包
# 或簡單腳本
extract() {
if [ -f "$1" ]; then
case "$1" in
*.tar.bz2) tar jxvf "$1" ;;
*.tar.gz) tar zxvf "$1" ;;
*.tar.xz) tar Jxvf "$1" ;;
*.bz2) bunzip2 "$1" ;;
*.gz) gunzip "$1" ;;
*.tar) tar xvf "$1" ;;
*.zip) unzip "$1" ;;
*.rar) unrar x "$1" ;;
*.7z) 7z x "$1" ;;
*) echo "未知格式: $1" ;;
esac
fi
}
記住 tar + z/j/J 三大黃金組合覆蓋 90% 需求;zip 用於跨平台分享;7z 追求極致壓縮率;xz 為現代核心套件標準。將 extract() 函數加入 ~/.bashrc,一指令解決所有格式。