跳转到内容

bzip2

bzip2 是 Linux 系统中常用的文件压缩工具,采用 Burrows-Wheeler 变换算法和 Huffman 编码,压缩比通常高于 gzip,但压缩速度较慢,生成 .bz2 格式文件。

Terminal window
bzip2 [选项] 文件名...

bzip2 本身只能压缩单个文件,处理目录时,通常先用 tar 工具打包,然后用 bzip2 压缩。

1. 压缩选项

选项 说明
-z 压缩文件(默认行为)
-k 保留原文件
-f 强制压缩,即使目标文件已存在也覆盖
-c 将压缩结果输出到标准输出,不修改原文件,一般配合重定向使用
-1 至 -9 压缩级别,-1 最快但压缩率低,-9 最慢但压缩率高,默认 -9
--fast 快速压缩,相当于 -1
--best 最佳压缩,相当于 -9
-v 显示压缩详细信息

2. 解压选项

选项 说明
-d 解压文件
-k 解压时保留原压缩文件
-f 强制解压,覆盖已有文件
-c 将解压结果输出到标准输出,一般配合重定向使用
-t 测试压缩文件完整性
-v 显示解压详细信息

1. 压缩文件

Terminal window
# 基础压缩:删除原文件,生成 .bz2 压缩文件
bzip2 file.txt
# 生成压缩文件 data.csv.bz2,保留原文件
bzip2 -k data.csv
# 快速压缩(级别 1),保留原文件并显示详情
bzip2 -1 -k -v log.txt

2. 解压文件

Terminal window
# 基础解压缩:删除 .bz2 文件,恢复原文件
bzip2 -d file.txt.bz2
# 或使用 bunzip2(效果相同)
bunzip2 file.txt.bz2
# 解压缩并保留 .bz2 文件
bunzip2 -k report.txt.bz2
# 解压缩时显示详情
bzip2 -d -v data.csv.bz2

3. 压缩/解压缩到标准输出

Terminal window
# 压缩文件并手动指定输出文件名
bzip2 -c notes.txt > my_notes.bz2
# 解压缩到指定文件(不影响原 .bz2 文件)
bunzip2 -c report.txt.bz2 > restored_report.txt
# 结合管道传输(例如压缩后直接发送到远程服务器)
bzip2 -c large_file | ssh user@server "cat > /backup/large_file.bz2"

4. 目录压缩/解压缩处理

Terminal window
# 先打包再压缩
tar -cf file.tar directory/ # 创建归档
bzip2 file.tar # 压缩成 file.tar.bz2
# 解压 .tar.bz2 归档
bzip2 -d file.tar.bz2 # 得到 file.tar
tar -xf file.tar # 解开 tar 包

也可以一步完成,tar 中有专门调用 bzip2 的选项 -j:

Terminal window
# 创建 .tar.bz2 归档(先打包再压缩)
tar -cjf file.tar.bz2 directory/
# 解压 .tar.bz2 归档
tar -xjf file.tar.bz2