恢复已损bzip2压缩文件中的数据
bzip2 [-cdfkqstvz123456789] [files]
bunzip2 [-fksv] [files]
bzcat [-s] [files]
bzip2recover file
bzip2 [-h|--help] [-L|--license] [-V|--version]
bzip2命令采用Burrows-Wheeler数据块排序文本压缩算法与Huffman编码压缩指定的文件。其压缩效果通常好于基于LZ77/LZ78算法的压缩工具,性能接近于PPM系列的统计压缩工具。
其中,files是一个或多个文件。如果未指定文件名参数,bzip2将会压缩来自标准输入的数据,把压缩后的结果写到标准输出,但会拒绝把压缩数据写到终端,因为这是完全无法理解的,也是没有意义的,除非重定向到一个文件。在第四种语法格式中,file是已受损的压缩文件。
bzip2的命令行选项非常类似于GNU gzip,但两者并不相同。
bzip2依次压缩命令行中指定的每个文件,然后使用压缩后的文件替换每一个初始文件,压缩文件以初始文件名加“.bz2”后缀(original.bz2)命名。每个压缩文件与相应的初始文件具有相同的修改时间与访问权限,同时尽可能保持相同的文件属主等属性。确保在解压文件时能够正确地恢复上述各种文件属性。
通常,bzip2与bunzip2命令不会覆盖现有的文件。如果需要覆盖现有的文件,可以在命令行中指定“-f”选项。
bunzip2或“bzip2 -d”命令用于解压指定的所有文件。如果指定的文件并非bzip2命令创建的,bunzip2或“bzip2 -d”命令不会处理,但会输出一条忽略相应文件的错误信息。通常,bzip2 将会按照下列方式命名压缩文件解压后的文件名:
filename.bz2 filename
filename.bz filename
filename.tbz2 filename.tar
filename.tbz filename.tar
othername othername.out
如果文件的后缀并非.bz2、.bz、.tbz2或.tbz等能够识别的扩展名之一,则bzip2使用初始的文件名加.out后缀作为文件名参数。
bzcat或“bzip2 -dc”命令将会解压指定的所有文件,把解压结果写到标准输出。
在开始压缩或解压之前,bzip2将会依次从BZIP2与BZIP环境变量中读取命令选项及其参数。在读取任何命令行选项及其参数之前,首先处理环境变量预定义的选项及其参数。这种机制为用户使用默认选项及其参数提供了方便。
即使压缩后的文件稍微大于压缩前的文件,压缩也总是执行。如果文件小于100字节,压缩后的文件肯定大于压缩前的文件,因为压缩算法通常需要有一个约50字节的常规开销。
作为一种自检与保护机制,bzip2使用32位的CRC校验和,确保压缩后的文件等同于初始的文件,保护压缩后的数据不致受损。压缩后数据受损的机会微乎其微,其概率是40亿分之一。尽管如此,bzip2解压时仍会做必要的检测。如果压缩文件已经受损,可以使用bzip2recover命令尝试恢复已受损的压缩文件中的数据。
bzip2以数据块为单位压缩文件,每个数据块通常为900KB,独立处理。如果因介质或传输错误等原因导致压缩文件受损,可以从未受损的数据块中恢复部分数据。
bzip2recover命令用于检索压缩文件中的每一个数据块,把抽取的每个数据块写到rec00001file.bz2、rec00002file.bz2等一系列单独的文件中。其中,file是压缩文件去掉“.bz2”后缀的文件名。
最后,利用“bzip2 -dc rec*file.bz2 > recovered-data”命令,可以按照正确的顺序,把恢复后的数据块连接到一起,形成一个文件。
-c, --stdout 把压缩或解压结果写到标准输出。采用这种方式可以同时压缩或解压多个文件,把压缩或解压结果连续地写到标准输出。
-d, --decompress 强制解压模式。bzip2、bunzip2和bzcat实为同一个程序,至于究竟采取什么处理动作,取决于使用的是哪一个名字。这个选项强制bzip2解压指定的文件。
-f, --force 强制覆盖输出文件,或强制删除现有的文件。通常,bzip2不会覆盖现有的同名文件,除非指定了“-f”选项。而且,bzip2拒绝解压魔术(magic)代码不正确的文件。但是,如果指定了“-f”选项,bzip2将会不加修改地复制这样的文件(这也是GNU gzip的处理方式)。
-k, --keep 在压缩或解压文件时,保持输入文件不变(即不删除输入文件)。
-q, --quiet 禁止输出不重要的警示信息。但不限制输出I/O错误或其他严重事件之类的信息。
-s, --small 在压缩、解压或检测期间,减少内存的使用。
-t, --test 检测指定文件的完整性而不执行解压动作。这仅仅是一个试解压过程,最终会扔掉解压结果。
-v, --verbose 详细显示模式。显示正在处理的每个文件的压缩率。同时增加了输出数据的详细程度,其主要目的是输出大量的信息供诊断使用。
-z, --compress 强制压缩模式。与“-d”选项相反,不管调用哪一个名字,均强制执行压缩动作。
-1 (--fast) ~ -9 (--best) 设置压缩时使用的数据块的大小,其中“-1”至“-9”分别表示100KB至900KB。注意,这些选项对解压没有任何影响。“--fast”与“--best”选项主要是为保持与GNU gzip兼容而保留的别名。尤其是“--fast”选项并不意味着压缩速度更快,“--best”选项也只是选择默认的处理方式而已。
-- 选项终止标志。表示此后的任何参数均作为文件名处理,即使其首字符为“-”。主要用于处理文件名的首字符为“-”的文件。例如,“bzip2 -- -filename”。
1. 压缩指定的文件,观察文件的压缩比等信息。
$ bzip2 -v test1 test2 nmap: 3.549:1, 2.254 bits/byte, 71.82% saved, 162458 in, 45780 out. tcpdump: 3.147:1, 2.542 bits/byte, 68.22% saved, 55967 in, 17787 out. $
2. 检测压缩文件的完整性。
$ bunzip2 -tv nmap.bz2 tcpdump.bz2 nmap.bz2: ok tcpdump.bz2: ok $
索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z