Contents

常用压缩格式对比

在 Linux 环境下,选择压缩工具通常是在压缩比(文件多小)速度(耗时多久) 之间做权衡。

以下是主流压缩格式的压缩比排名(从高到低)及其对应的操作命令:


1. 压缩比排名 (由强到弱)

排名 格式 (后缀) 核心算法 特点
1 .7z LZMA/LZMA2 最强压缩比。适合对体积极其敏感、不计较压缩时间的场景。
2 .xz LZMA2 Linux 官方标准的高压缩比格式。内核源码、发行版包常用,解压快但压缩极慢。
3 .bz2 Burrows-Wheeler 曾是主流。压缩比高于 gzip,但目前地位逐渐被 xz 和 zstd 取代。
4 .zst Zstandard 全能选手。由 Facebook 开发,压缩比接近 bz2,但速度极快,且支持多线程。
5 .gz DEFLATE 最兼容/最快。压缩比一般,但在几乎所有 Unix 系统上都通用,速度表现稳定。
6 .zip DEFLATE 跨平台王者。在 Linux 内部压缩比最低,主要用于发给 Windows 用户。

注: 以上排名基于通用混合数据(文档、代码等)。如果是针对已压缩过的文件(如 JPG、MP4),各工具表现差异不大。


2. 常用命令速查

在 Linux 中,我们通常使用 tar 工具来打包并调用这些压缩算法。

A. 极致压缩派 (7z / XZ)

  • 7z (需要安装 p7zip)

    7z a archive.7z folder/    # 压缩
    7z x archive.7z            # 解压
    
  • XZ (tar 集成)

    tar -cJf archive.tar.xz folder/    # 压缩 (大写 J)
    tar -xJf archive.tar.xz            # 解压
    

B. 现代平衡派 (Zstandard)

  • Zstd (目前各大发行版推荐)

    tar --zstd -cf archive.tar.zst folder/  # 压缩
    tar --zstd -xf archive.tar.zst          # 解压
    
    # -I(--use-compress-program)调用外部程序和参数
    # -T 多线程压缩(0是匹配当前机器的核心数)
    # --ultra 指定压缩等级(1-19,默认3)
    tar -I "zstd -T0 --ultra -20" -cf archive.tar.zst folder/
    

C. 传统经典派 (Gzip / Bzip2)

  • Gzip (最常用)

    tar -czf archive.tar.gz folder/    # 压缩 (小写 z)
    tar -xzf archive.tar.gz            # 解压
    
  • Bzip2

    tar -cjf archive.tar.bz2 folder/   # 压缩 (小写 j)
    tar -xjf archive.tar.bz2           # 解压
    

3. 场景选择建议

  • 追求极致体积:.xz.7z

    • 例子: 长期备份不常读取的技术文档。
  • 追求备份效率(快且小):.zst

    • 例子: 每日数据库备份、日志滚动。
  • 追求通用性:.tar.gz

    • 例子: 分发给其他 Linux 服务器的软件源码包。
  • 发给 Windows 同事:.zip

提示: 很多工具(如 xzzstd)支持 -T0 参数(多线程),可以显著提升多核 CPU 下的压缩速度。例如:export XZ_OPT="-T0"