
文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载本文基于 linux-command 仓库的 command/bzip2.md 文档整理扩充系统讲解 bzip2 的算法原理、命令行选项、文件命名规则、数据完整性校验与退出码并覆盖 bunzip2、bzcat、bzgrep、bzip2recover 等 bzip2 家族配套命令的实战用法帮你把 .bz2 压缩包的压缩、解压、校验、查看与修复流程一次掌握。bzip2 是什么算法定位与压缩率优势bzip2是 Linux 系统中用于创建和管理包括解压缩.bz2格式压缩包的命令。它采用Burrows-Wheeler 块排序文本压缩算法BWT与Huffman 编码组合的方式压缩文件BWT 通过块排序把相似字符聚拢再经前移编码MTF与游程编码RLE处理最后由 Huffman 编码做熵编码从而获得非常高的压缩率。从压缩率角度看bzip2 的表现一般比基于 LZ77/LZ78 的压缩软件如 gzip、zip 的 deflate 算法好得多其性能接近 PPM 族统计类压缩软件。代价是压缩速度通常慢于 gzip——这是「高压缩率」与「速度」之间的经典取舍。在设计上bzip2 的命令行参数有意设计为非常接近 GNU gzip 的形式但两者并不完全相同gzip 支持-r递归压缩目录详见 command/gzip.md而 bzip2 只能针对单个文件操作二者都只能压缩文件而不能「打包」目录目录打包需要配合 tar 完成。基本工作方式文件替换、元数据保留与标准输入输出bzip2 从命令行读入文件名和参数每个文件被名为「原始文件名.bz2」的压缩文件替换。压缩产生的每个文件具有与原文件相同的修改时间、权限如果可能的话还具有相同的属主因此在解压缩时这些特性将被正确地恢复。这使 bzip2 在备份场景下能完整还原文件的元数据状态。需要特别说明的边界情况在某些文件系统如 MSDOS中没有权限、属主或时间的概念或对文件名长度有严格限制此时 bzip2 没有保持原文件名、属主、权限以及时间的机制——从这个意义上说bzip2 对文件名的处理是「幼稚的」。bzip2 和 bunzip2 在缺省情况下不覆盖已有的文件如果想覆盖已有的文件必须指定-f选项。如果未指定文件名bzip2 将压缩来自标准输入的数据并写往标准输出在这种情况下bzip2 会拒绝将压缩结果写往终端因为这无法理解且没有意义从而避免终端被二进制流污染。语法与命令行选项全解析语法格式bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ... ]核心选项对照表选项长选项作用-c--stdout将数据压缩或解压缩至标准输出-d--decompress强制解压缩。bzip2、bunzip2 以及 bzcat 实际上是同一个程序进行何种操作根据程序名确定指定该选项后不考虑这一机制强制进行解压缩-z--compress-d的补充强制进行压缩操作而不管执行的是哪个程序-t--test检查指定文件的完整性但并不对其解压缩实际上会对数据做实验性解压缩而不输出结果-f--force强制覆盖输出文件。通常 bzip2 不会覆盖已存在的文件该选项还强制 bzip2 打破文件的硬连接缺省情况下 bzip2 不会这么做-k--keep在压缩或解压缩时保留输入文件不删除这些文件-s--small在压缩、解压缩及检查时减少内存用量详见下方「内存管理」-q--quiet压制不重要的警告信息I/O 错误及其它严重事件的信息不会被压制-v--verbose详尽模式显示每个被处理文件的压缩率命令行中更多的-v选项将增加详细程度使 bzip2 显示出许多主要用于诊断目的的信息-L--license显示软件许可证条款及条件-V--version显示软件版本-1~-9—在压缩时将块长度设为 100k、200k … 900k对解压缩没有影响--—将所有后面的命令行变量看作文件名即使这些变量以减号-打头--repetitive-fast--repetitive-best这两个选项在 0.9.5 及其以上版本中是多余的早期版本中它们对排序算法行为提供粗糙控制0.9.5 采用改进算法后已无意义压缩等级与内存管理-1到-9控制压缩时的块长度100k、200k … 900k块长度越大压缩率越高、内存占用越大、速度越慢。这与 gzip 的-1~-9语义类似gzip 缺省为 6参见 command/gzip.md。使用-s--small时采用一种修正的算法进行压缩和测试解压缩/测试时每个数据块仅需要 2.5 个字节这意味着任何文件都可以在2300k约 2.3MB内存中解压尽管速度只有通常情况下的一半压缩时-s会选定 200k 的块长度内存用量限制在 200k 左右代价是压缩率降低。实际建议如果机器内存较少8 兆字节或更少可对所有操作都采用-s选项在低内存环境下保证命令可用。解压命名规则bzip2 如何确定输出文件名bunzip2以及bzip2 -d对所有指定的文件进行解压缩处理。不是由 bzip2 产生的文件将被忽略同时发出一个警告信息。bzip2 按下列方式由压缩文件名确定解压后的文件名filename.bz2 解压成 filename filename.bz 解压成 filename filename.tbz2 解压成 filename.tar filename.tbz 解压成 filename.tar anyothername 解压成 anyothername.out如果文件名的后缀不是.bz2、.bz、.tbz2或.tbz中的任何一种bzip2 将抱怨无法确定原始文件名并采用「原文件名 .out」作为解压缩文件名。在压缩时同理如果不提供文件名bzip2 将从标准输入读取数据压缩结果写往标准输出。数据完整性32 位 CRC 校验与退出码bzip2 采用32 位 CRC 校验码作自我检查以确认解压后的文件与原始文件相同。这可用于检测压缩文件是否损坏防止 bzip2 中未知的缺陷可能性极小。数据损坏而未被检测到的几率非常之小对于每个被处理的文件大约是四十亿分之一。检查是在解压缩时进行的因此它只能说明「某个地方出问题了」不能帮助恢复原始未压缩数据——若数据已损坏需要用bzip2recover尝试从损坏的文件中恢复数据。退出码含义退出码含义0正常退出1出现环境问题文件未找到、非法的选项、I/O 错误等2压缩文件损坏3出现导致 bzip2 紧急退出的内部一致性错误例如程序缺陷在 Shell 脚本中可根据这些退出码区分「环境问题」「文件损坏」和「程序异常」三种不同的失败原因从而采取不同的重试或告警策略。实战实例从压缩到校验的完整操作1. 压缩指定文件bzip2 filename # 或 bzip2 -z filename压缩时终端不会输出任何信息原来的文件filename会被删除替换成filename.bz2。行为细节如果以前已有filename.bz2则不会替换并提示错误想要替换则指定-f例如bzip2 -f filename如果filename是目录则提示错误且不做任何操作如果filename已经是压缩过的带 bz2 后缀会提示一下不再压缩没有 bz2 后缀则会再次压缩。2. 解压指定的 .bz2 文件bzip2 -d filename.bz2 # 或 bunzip2 filename.bz2解压时没有标准输出原来的文件filename.bz2会被替换成filename。如果以前有filename则不会替换并提示错误想要替换则指定-f例如bzip2 -df filename.bz2。3. 显示压缩率等详细信息bzip2 -v filename输出示例filename: 0.119:1, 67.200 bits/byte, -740.00% saved, 5 in, 42 out.其中0.119:1是压缩比bits/byte表示每字节压缩后的比特数saved为节省的百分比in/out分别是输入输出字节数。解压时同理使用bzip2 -dv filename.bz2。4. 模拟解压完整性测试不实际生成文件bzip2 -tv filename.bz2输出示例filename.bz2: ok-t指定进行模拟解压不实际生成结果相当于检查文件——即使目录下已有filename也不会产生错误输出因为它根本不会真的解压文件。为了在屏幕上输出结果这里加上了-v如果是真的解压bzip2 -dv filename.bz2则输出的是把ok替换成done。5. 压缩/解压时保留原始文件bzip2 -k filename加上-k就保存原始文件了否则原始文件会被结果文件替代。解压时同理bzip2 -dk filename.bz2。6. 解压到标准输出bzip2 -dc filename.bz2输出示例hahahhaahahha使用-c指定输出到标准输出屏幕上显示的是filename的内容且不会删除filename.bz2。这在管道场景下非常实用例如直接查看压缩日志bzip2 -dc access.log.bz2 | grep ERROR7. 压缩到标准输出与终端保护机制bzip2 -c filename输出示例bzip2: I wont write compressed data to a terminal. bzip2: For help, type: bzip2 --help.使用-c指定压缩到标准输出且不删除原有文件但压缩后的二进制数据无法输出到终端这是 bzip2 刻意设计的终端保护机制。想将压缩流落盘需配合重定向bzip2 -c filename filename.bz2。8. 处理以减号开头的文件名bzip2 -- -myfilename--之后的参数全部视为文件名防止文件名中的-被误解析为选项。bzip2 家族配套命令速览bzip2 生态还包含一组配套命令仓库中均有对应文档可在 command 目录中查阅命令用途对应文档bunzip2解压缩.bz2文件实为 bzip2 的符号链接软链接因此解压也可以通过bzip2 -d实现command/bunzip2.mdbzcat不解压直接显示.bz2压缩包解压后的内容command/bzcat.mdbzmore分屏查看 bzip2 压缩的文本文件command/bzmore.mdbzless增强版.bz2查看器比 bzmore 功能更强command/bzless.mdbzgrep用正则表达式直接搜索.bz2压缩包中的内容匹配行输出到标准输出command/bzgrep.mdbzcmp不真正解压直接比较两个.bz2压缩包中的文件command/bzcmp.mdbzdiff直接比较两个.bz2压缩包中文件的不同省去解压后调用 diff 的过程command/bzdiff.mdbzip2recover恢复被破坏的.bz2压缩包中的文件command/bzip2recover.mdbunzip2 的常用选项bunzip2及 bzip2 -d支持的选项与 bzip2 保持一致-f 或 --force # 解压缩时若输出的文件与现有文件同名预设不会覆盖使用此参数强制覆盖 -k 或 --keep # 解压缩后预设会删除原压缩文件使用此参数保留压缩文件 -s 或 --small # 降低程序执行时的内存使用量 -v 或 --verbose # 解压缩文件时显示详细信息 -l, --license, -V 或 --version # 显示版本信息批量压缩与解压的实战组合对/opt目录下的etc.zip、var.zip和backup.zip进行压缩设置压缩率为最高、压缩完毕后不删除原始文件、并显示详细过程bzip2 -9vk /opt/etc.zip /opt/var.zip /opt/backup.zip压缩完毕后在/opt下生成etc.zip.bz2、var.zip.bz2和backup.zip.bz2。解压时bunzip2 -v /opt/etc.zip.bz2查看与搜索压缩文件配合bzcat、bzmore、bzgrep可在不解压的情况下直接消费.bz2内容# 压缩文件man.config 变为 man.config.bz2 bzip2 -z man.config # 直接读出压缩文件内容 bzcat man.config.bz2 # 在压缩包中按正则搜索 bzgrep error app.log.bz2损坏文件的恢复bzip2 以**区块block**的方式压缩文件每个区块视为独立的单位。因此当某一区块损坏时可以利用bzip2recover试着将文件中的区块隔离开来以便解压缩正常的区块bzip2recover broken.bz2通常这适用于压缩文件很大的场景——大文件按块压缩时损坏的往往只是个别区块其余区块仍有恢复价值。总结与速查bzip2 是 Linux 下追求高压缩率的首选单文件压缩工具它以 BWT Huffman 算法获得优于 gzip 的压缩率通过.bz2后缀自动完成文件替换用 32 位 CRC 保证解压完整性并以 0/1/2/3 四个退出码区分正常、环境错误、文件损坏与程序异常。核心记忆点压缩bzip2 [-1~-9] [-k] filename保留原文件用-k覆盖已有文件用-f解压bunzip2 filename.bz2或bzip2 -d filename.bz2校验bzip2 -tv filename.bz2输出ok即完整查看/搜索bzcat、bzmore、bzgrep免解压消费内容修复大文件损坏用bzip2recover按区块抢救。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐Linux 7z 命令详解7-Zip 高压缩比压缩与解压实战指南Linux 7z 命令详解7 Zip 高压缩比压缩与解压实战指南 7z 是开源压缩软件 7 Zip 在 Linux 平台的命令行前端p7zip 包提供以文档教程Linux bunzip2 命令详解用符号链接解压 .bz2 压缩包linux-command 速查指南Linux bunzip2 命令详解用符号链接解压 .bz2 压缩包linux command 速查指南 bunzip2 是 Linux 系统中用于解压文档教程linux-command 手册详解bzcat 命令——不解压直接查看 .bz2 压缩文件内容linux command 手册详解bzcat 命令——不解压直接查看 .bz2 压缩文件内容 导读 bzcat 是 Linux 下 bzip2 压缩工具家族文档教程上一篇终极iOS设备复活指南用Legacy iOS Kit解锁旧设备新生命下一篇Legacy iOS Kit终极iOS降级恢复与越狱工具链完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考