首页/系统/Linux 运维命令速查/bzip2 压缩与解压(.bz2)
文件与目录76 条

bzip2 压缩与解压(.bz2)

经典高压缩率工具,压缩比通常高于 gzip 但速度慢;老系统与遗留归档中常见,配合 tar -j 使用。

Linux 运维命令速查系统更新于 2026-10-13

bzip2 是什么

bzip2 是单文件压缩工具,用 Burrows-Wheeler 变换配合霍夫曼编码,压缩率通常高于 gzip,代价是压缩与解压速度明显更慢,且不支持多线程并行。它在老系统、遗留源码包(.tar.bz2)与历史归档中仍很常见,tar 通过 -j 选项直接调用它。新项目一般选压缩率更高的 xz,或速度更快的 zstd。

基本信息

适用平台Linux、macOS、WSL;主流发行版均自带
语法bzip2 [-z | -d | -t] [-k] [-9] [-v] 文件
命令家族bzip2 压缩、bunzip2 解压、bzcat 解压到标准输出、bzip2recover 抢救损坏归档
默认行为压缩或解压成功后删除源文件,需要保留源文件必须加 -k

典型使用场景

  • 接手上古系统的归档,只有 .bz2 文件需要解开
  • 把体积较大的历史日志压小存放,且不介意压缩耗时
  • 与只认 .tar.bz2 的老旧工具链或对方环境交换文件
  • 对下载来的归档做完整性校验(-t)后再删除原始拷贝
  • 用 bzip2recover 尽力抢救损坏的分块归档

常用示例

常用示例
bzip2 -k -9 app.log            # 保留原文件,使用最高压缩级别
bunzip2 -k app.log.bz2          # 解压并保留压缩包
bzcat app.log.bz2 | head        # 不解压落盘,直接看内容
bzip2 -t app.log.bz2            # 完整性测试,通过则无输出
tar -jcvf etc-2026.tar.bz2 /etc  # 打包并调用 bzip2 压缩
tar -jtvf etc-2026.tar.bz2      # 不解压,列出包内文件
tar -xjf etc-2026.tar.bz2 -C /tmp  # 解包到指定目录
zstd -T0 app.log                # 新场景的替代:多线程、更快

选项逐项读法

选项作用使用注意
-z压缩,缺省行为压缩后源文件消失,除非加 -k
-d解压(等价 bunzip2)常与 -k 一起使用保留压缩包
-t只做完整性测试归档迁移前跑一遍,避免删了源才发现坏
-k保留输入文件在脚本里几乎总该加上
-9最高压缩级别(默认也是 9)级别高意味着更慢,收益对小文件不明显
-f覆盖已存在的输出文件自动化脚本里慎用,容易覆盖同名新文件
bzip2 单进程单线程,批量压缩大日志会长时间占满一颗 CPU;需要并行时改用 zstd -T0 或 pigz、xz -T0。
压缩率并非永远高于 gzip:小文件、图片视频等已压缩数据再压几乎没有收益,却要多花时间。批量处理前先用一两个样本对比输出体积。

易错点

  • 忘记加 -k 会让源文件被删掉,源文件只此一份时只能从备份恢复
  • .bz2 只能承载单个文件,先把多个文件 tar 起来再压,直接压缩目录会报错
  • 同一个 .bz2 损坏后无法只解出前半部分,重要归档要先 bzip2 -t 校验再删除原始数据
  • 并发调用多个 bzip2 -9 实例会显著抬高内存与 CPU 占用,批处理脚本要限制并发数

数据来源与参考

  • man 1 bzip2(bzip2 官方手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌