"Burrows-Wheeler block sorting compression algorithm" 的缩写,是一个基于 Burrows-Wheeler 算法的文件压缩/解压缩工具,相比 gzip 通常具有更高的压缩率,但压缩和解压缩速度稍慢,适用于对压缩率要求较高的场景(如备份大型文本文件)。
该命令会将原始文件压缩为 .bz2 后缀的压缩文件,默认删除原始文件,支持单个文件压缩,不直接支持目录压缩(需配合 tar 使用)。
bzip2 [选项] <文件1> <文件2> ...常用选项
-d:"decompress",解压缩.bz2格式的压缩文件,例如bzip2 -d data.txt.bz2将data.txt.bz2解压缩为data.txt并删除压缩文件。-k:"keep",压缩或解压缩后保留原始文件,例如bzip2 -k report.pdf压缩后同时保留report.pdf和report.pdf.bz2(默认删除原始文件)。-c:"stdout",将压缩/解压缩结果输出到标准输出(不修改原始文件),例如bzip2 -c logs.txt > logs.txt.bz2通过重定向保存压缩结果,原始文件不变。-v:"verbose",显示压缩/解压缩的详细信息(包括压缩率、大小变化),例如bzip2 -v archive.tar输出archive.tar: 4.500:1, 2.000 bits/byte, 77.78% saved, 102400 in, 22756 out。-1至-9:指定压缩级别(1 最快但压缩率最低,9 最慢但压缩率最高,默认级别为 9),例如bzip2 -1 largefile.dat以最快速度压缩,适合对时间敏感的场景。-t:"test",测试压缩文件的完整性,例如bzip2 -t backup.bz2检查backup.bz2是否损坏,无输出表示正常,错误则提示损坏信息。-z:"compress",强制压缩模式(默认行为,可省略),例如bzip2 -z document.txt明确指定压缩操作,与直接执行bzip2 document.txt效果一致。-f:"force",强制覆盖已存在的输出文件,或压缩已压缩的文件(会生成.bz2.bz2后缀,不推荐),例如bzip2 -f existing.bz2覆盖已存在的压缩文件。
参考示例
示例1:基本压缩单个文件 执行
bzip2 data.csv,将data.csv压缩为data.csv.bz2,并删除原始文件,适合压缩大型文本文件以节省空间。示例2:解压缩并保留压缩包 执行
bzip2 -d -k backup.tar.bz2,解压缩backup.tar.bz2为backup.tar,同时保留原始压缩包,便于长期存档压缩文件。示例3:批量压缩文件并显示详情 执行
bzip2 -v *.log,压缩当前目录下所有.log文件,生成.bz2压缩文件,并显示每个文件的压缩率和大小变化,便于对比压缩效果。示例4:低级别快速压缩 执行
bzip2 -1 -k report.txt,以最低级别(最快速度)压缩report.txt,保留原始文件,适合需要快速生成压缩文件的场景。示例5:通过管道压缩大文件 执行
cat largefile.txt | bzip2 -c > largefile.txt.bz2,通过管道读取文件内容并压缩,避免直接操作原始文件(适合正在被使用的文件,如日志)。示例6:测试压缩文件完整性 执行
bzip2 -t important.bz2,检查important.bz2是否损坏,无输出表示文件正常,若损坏则提示bzip2: important.bz2: bad magic number (file not created by bzip2?)。示例7:压缩目录(配合tar) 执行
tar -cf - docs/ | bzip2 -c > docs.tar.bz2,先通过tar打包docs/目录为数据流,再用bzip2压缩并保存为docs.tar.bz2,实现目录的高效压缩(等效于tar -jcf docs.tar.bz2 docs/)。示例8:强制覆盖现有压缩文件 执行
bzip2 -f -v old_data.txt,当old_data.txt.bz2已存在时,强制覆盖并显示压缩详情,适合更新旧的压缩文件。
注意:
bzip2压缩率通常高于gzip,但速度较慢,适合对存储空间要求高、时间不敏感的场景(如备份)。与gzip类似,它仅支持单个文件压缩,压缩目录需先通过tar打包,常用组合命令为tar -jcvf 压缩包名.tar.bz2 目录/(打包并压缩)和tar -jxvf 压缩包名.tar.bz2(解压缩并解包)。