200字
bzip2
2025-10-10
2025-10-10

"Burrows-Wheeler block sorting compression algorithm" 的缩写,是一个基于 Burrows-Wheeler 算法的文件压缩/解压缩工具,相比 gzip 通常具有更高的压缩率,但压缩和解压缩速度稍慢,适用于对压缩率要求较高的场景(如备份大型文本文件)。

该命令会将原始文件压缩为 .bz2 后缀的压缩文件,默认删除原始文件,支持单个文件压缩,不直接支持目录压缩(需配合 tar 使用)。

 bzip2 [选项] <文件1> <文件2> ...

常用选项

  • -d:"decompress",解压缩 .bz2 格式的压缩文件,例如 bzip2 -d data.txt.bz2data.txt.bz2 解压缩为 data.txt 并删除压缩文件。

  • -k:"keep",压缩或解压缩后保留原始文件,例如 bzip2 -k report.pdf 压缩后同时保留 report.pdfreport.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.bz2backup.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(解压缩并解包)。

评论