Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 壓縮與封裝指令大全:tar、gzip、xz、zstd、7z 實戰速查

編輯:Linux 教學

格式選擇決策樹

需求分析:
├─ 跨平台相容性最高 → zip
├─ Linux 專用、最大壓縮比 → xz / zstd (高等級)
├─ 速度優先、即時備份 → zstd -1 / lz4
├─ 固化格式、長期歸檔 → tar + xz/zstd
├─ 需加密分卷 → 7z / zip -e
└─ 管線串流、無中間檔 → tar | ssh / tar | gzip/xz/zstd

核心指令速查表

操作tar + gziptar + xztar + zstd7zzip
建立tar -czf a.tar.gz dirtar -cJf a.tar.xz dirtar --zstd -cf a.tar.zst dir7z a a.7z dirzip -r a.zip dir
解壓tar -xzf a.tar.gztar -xJf a.tar.xztar --zstd -xf a.tar.zst7z x a.7zunzip a.zip
列表tar -tzf a.tar.gztar -tJf a.tar.xztar --zstd -tf a.tar.zst7z l a.7zunzip -l a.zip
只解單檔tar -xzf a.tar.gz path/filetar -xJf a.tar.xz path/filetar --zstd -xf a.tar.zst path/file7z e a.7z path/fileunzip a.zip path/file
排除模式tar -czf a.tar.gz --exclude='*.log' dir同左同左7z a a.7z dir -x!*.logzip -r a.zip dir -x *.log
保留權限/擁有者tar -czpf a.tar.gz dir (需 root)同左同左預設保留zip -r a.zip dir (不保留 UID/GID)
多執行緒tar -czf - dir | pigz > a.tar.gztar -cJf - dir | pixz > a.tar.xztar --zstd -cf a.tar.zst -T4 dir (zstd 1.5+)7z a -mmt=on a.7z dirzip -r -mm a.zip dir (少見)

進階參數深度解析

tar 關鍵選項

-c, --create           建立
-x, --extract, --get   解壓
-t, --list             列表
-f, --file=ARCHIVE     檔案名 (必須緊接)
-v, --verbose          顯示過程
-z, --gzip             gzip 過濾器
-J, --xz               xz 過濾器
--zstd                 zstd 過濾器 (tar 1.31+)
--lzma, --lzip         其他
-P, --absolute-paths   保留絕對路徑 (預設移除前導 /)
--no-recursion         不遞迴
--one-file-system      不跨檔案系統
--exclude=PATTERN      排除
--exclude-from=FILE    從檔案讀取排除清單
--transform=EXPR       sed 風格路徑重寫
--strip-components=N   移除前 N 級目錄
--owner=USER --group=GROUP  強制擁有者 (建立時)
--mtime=DATE           統一修改時間 (可重現建置)
--numeric-owner        數值 UID/GID (跨系統)
--acls --xattrs --selinux  保留擴充屬性

壓縮等級與效能權衡

工具等級範圍預設推薦 (平衡)極速極壓
gzip1-96-6-1-9
xz0-96-6 / -3 (快)-0 / -1-9 / -e
zstd1-22 (負數為極速)3-3 / -5-1 / -3-19 / -22 (極慢)
7z (LZMA2)0-95-mx=5-mx=1-mx=9
# 指定等級
tar -czf a.tar.gz -I 'gzip -9' dir
tar -cJf a.tar.xz -I 'xz -6' dir
tar --zstd -cf a.tar.zst -I 'zstd -5 -T4' dir
7z a -mx=7 a.7z dir
gzip -9 file
zstd -19 file.tar  # 極壓備份

實戰場景範例

1. 系統備份 (排除虛擬檔案系統、保留屬性)

tar --zstd -cf /backup/root-$(date +%F).tar.zst \
    --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run \
    --exclude=/tmp --exclude=/var/tmp --exclude=/backup \
    --exclude=/mnt --exclude=/media --exclude=/lost+found \
    --acls --xattrs --selinux --numeric-owner \
    -C / .

2. 專案發布 (排除 .git、node_modules、.venv、__pycache__)

tar -czf project-release.tar.gz \
    --exclude-vcs --exclude='*/node_modules' --exclude='*/.venv' --exclude='*/__pycache__' \
    --exclude='*.pyc' --exclude='*.log' --exclude='.DS_Store' \
    --transform='s,^,project/,' \
    .

3. 遠端同步備份 (管線 + SSH,無本地暫存)

# 本地 → 遠端
tar --zstd -cf - /source --exclude=/source/tmp | ssh user@backup "cat > /backup/src-$(date +%F).tar.zst"

# 遠端 → 本地
ssh user@server "tar --zstd -cf - /data --exclude=/data/tmp" | tar --zstd -xf - -C /restore

4. 分卷傳輸 (大檔案分割)

# 7z 分卷 (每卷 100MB)
7z a -v100m backup.7z /source

# zip 分卷
zip -r -s 100m backup.zip /source

# 合併還原
7z x backup.7z.001
# 或
cat backup.zip.z01 backup.zip.z02 ... backup.zip > backup.zip && unzip backup.zip

5. 加密壓縮

# 7z AES-256
7z a -p -mhe=on -mx=5 encrypted.7z /source
# -p 互動輸入密碼, -mhe=on 加密檔名

# zip (較弱 ZipCrypto, 或 AES-256 需支援)
zip -e -r encrypted.zip /source

# OpenSSL + tar (標準管線)
tar -cf - /source | openssl enc -aes-256-cbc -pbkdf2 -out backup.tar.enc
# 解密
openssl enc -d -aes-256-cbc -pbkdf2 -in backup.tar.enc | tar -xf -

現代化工具鏈

工具特色安裝
zstdFacebook 開發、壓縮/解壓極快、支援多執行緒、可調等級寬廣、標準化 RFC 8878dnf/apt install zstd
pigz / pixzgzip/xz 多執行緒包裝dnf/apt install pigz pixz
lz4極速壓縮 (500MB/s+)、適合即時傳輸/日誌dnf/apt install lz4
tar 1.35+原生 --zstd、--lz4、--zstdmt、--transform 增強新版發行版內建
borgbackup / restic去重備份、加密、掛載瀏覽、遠端儲存pip install borgbackup / dnf install restic
squashfs唯讀壓縮檔案系統、掛載即用、嵌入式/容器層常用mksquashfs / unsquashfs

效能基準參考 (單核心、典型文字/原始碼資料)

工具/等級壓縮速度 (MB/s)解壓速度 (MB/s)壓縮比適用場景
lz475040002.1x即時日誌、記憶體壓縮、ZRAM
zstd -147013802.9x快速備份、CI 成品
zstd -3 (預設)1805503.2x通用平衡
gzip -6902802.7x相容性優先
xz -625803.5x長期歸檔、軟體發布
zstd -192.55003.8x冷備份、一次寫入多次讀
7z -mx=95703.7x高壓縮比、分卷、加密

常見陷阱避雷

  • tar -czf a.tar.gz * 不會包含隱藏檔 → 用 tar -czf a.tar.gz .
  • 解壓覆蓋現有檔案無警告 → 加 -k, --keep-old-files 或先 -t 列表確認
  • 絕對路徑壓縮後解壓寫入系統根目錄 → 永遠用相對路徑 -C /path . 或 --transform
  • 大檔案 (>8GB) 用 gzip/xz 可能受限於 32 位元索引 → 改用 zstd/7z
  • 跨系統備份 UID/GID 不匹配 → --numeric-owner 還原時映射

黃金法則:備份先試還原、壓縮看解壓速度、歸檔用 xz/zstd、傳輸用 zstd/lz4、分發用 zip、加密用 7z/OpenSSL、去重用 borg/restic。

Copyright © Windows教程網 All Rights Reserved