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/bzip2/xz/zstd 格式選型、符號鏈接保護、分卷壓縮

編輯:Linux 教學

Linux 下壓縮工具鏈豐富,選型直接影響備份速度、壓縮比、兼容性與符號鏈接保真度。本文建立決策矩陣,覆蓋主流格式核心參數、符號鏈接陷阱、分卷壓縮與現代工具 zstd。

格式選型決策矩陣

格式副檔名算法壓縮比速度內存適用場景普及度
gzip.gz / .tgzDEFLATE中快低日誌輪轉、網絡傳輸、通用兼容★★★★★
bzip2.bz2 / .tbz2Burrows-Wheeler高慢中源碼分發、靜態資產備份★★★★☆
xz.xz / .txzLZMA2極高極慢高軟件包發布 (内核、Docker image)、長期歸檔★★★★☆
zstd.zst / .tzstZstandard可調 (極快~極高)極快~中可調現代備份、CI/CD 產物、內核編譯輸出 (Linux 5.1+)★★★★★ (新標準)
tar (無壓縮).tar—無極快極低小文件聚合、磁帶流式寫入★★★★★

核心命令速查 (tar 統一前端)

# 1. 僅打包 (無壓縮) - 磁帶/小文件聚合首選
tar -cvf backup.tar /etc /home

# 2. gzip 壓縮 - 通用兼容
tar -czvf backup.tar.gz /etc /home   # -z = gzip
tar -xzvf backup.tar.gz -C /restore

# 3. bzip2 壓縮 - 高壓縮比
tar -cjvf backup.tar.bz2 /etc /home  # -j = bzip2
tar -xjvf backup.tar.bz2

# 4. xz 壓縮 - 最高壓縮比 (內核/發布包)
tar -cJvf backup.tar.xz /etc /home   # -J = xz (大寫)
tar -xJvf backup.tar.xz

# 5. zstd 壓縮 - 現代最佳平衡 (需 tar 1.31+ / zstd 已安裝)
tar --zstd -cvf backup.tar.zst /etc /home
tar --zstd -xvf backup.tar.zst
# 等價長參數:--zstd / --use-compress-program=zstd

# 6. 自動識別解壓 (tar 1.27+)
tar -xvf backup.tar.*  # 自動根據副檔名/魔數選擇解壓程序

符號鏈接保護鐵律

現象: GUI 壓縮工具 (file-roller, ark) 預設跟隨符號鏈接,導致壓縮包膨脹、解壓後丟失鏈接關係、甚至陷入循環鏈接無限遞歸。

鐵律: 生產備份務必使用命令行 tar + -h (--dereference) 參數。

# -h: 打包時將符號鏈接解析為目標文件 (跟隨鏈接)
# --no-recursion: 不遞歸目錄 (配合 find 使用)
# 推薦組合:保留鏈接結構 (不跟隨)
tar -cvhf backup.tar /path  # 打包時解析鏈接,解壓還原為普通文件
# 如需完整保留鏈接關係 (需目標系統路徑一致):
tar -cvf backup.tar /path   # 無 -h,保留鏈接屬性
# 解壓時自動還原符號鏈接

驗證: tar -tvf backup.tar | grep '^l' 應顯示 linkname -> target。

分卷壓縮 (大文件傳輸/存儲限制)

# 分卷打包 (每卷 1GB)
tar -cvf - /data | split -b 1G - backup.tar.

# 合並解壓
cat backup.tar.* | tar -xvf -

# 或使用 tar 內建多卷 (舊版磁帶專用,現少用)
tar -c -M -L 1024000 -f backup.tar /data  # -L 以 KB 為單位

獨立工具直接調用 (非 tar 管道)

操作gzipbzip2xzzstd
壓縮文件gzip filebzip2 filexz filezstd file
保留原文件gzip -k filebzip2 -k filexz -k filezstd --keep file
解壓gunzip file.gzbunzip2 file.bz2unxz file.xzunzstd file.zst
查看壓縮比gzip -l file.gzbzip2 -l file.bz2xz -l file.xzzstd -l file.zst
調整等級gzip -1~9bzip2 -1~9xz -0~9 / -ezstd -1~19 / --ultra -20~22

RPM/DEB/CPIO 特殊格式

# RPM 提取不安裝
rpm2cpio package.rpm | cpio -idmv

# DEB 提取
dpkg-deb -x package.deb /target
ar x package.deb data.tar.xz && tar -xJf data.tar.xz

現代化建議

  • 新建備份腳本: 默認 tar --zstd -cvf,等級 -3 (默認) 平衡速度與比率;長期歸檔用 -19。
  • CI/CD 產物: 強制 .tar.zst,構建機預裝 zstd,下游解壓通用。
  • 日誌輪轉: logrotate 配置 compresscmd /usr/bin/zstd compressext .zst。
  • 磁帶/對象存儲流式: tar -cvf - /data | zstd -3 | aws s3 cp - s3://bucket/backup.tar.zst。

壓縮不再是 tar.gz 單一選擇,zstd 以極快速度、可調壓縮比、極低內存重新定義了備份效能基線。

Copyright © Windows教程網 All Rights Reserved