建设工作站服务器
bzip2
使用Burrows-Wheeler块排序文本压缩算法压缩文件。 压缩率比普通算法稍高。 bzip2要求命令行标志有文件名列表。 每个文件都将被您自己的压缩版本original_name.bz2替换。 每个压缩的文件与相应的原始文件具有相同的修改日期、权限和所有权,以便在解压缩时尽可能正确地恢复这些属性。
缺省情况下,bzip2和bunzip2不会复盖现有文件。 如果希望出现这种情况,请指定“-f”标志。 如果不指定文件名,bzip2将从标准输入压缩为标准输出。 在这种情况下,bzip2拒绝将压缩输出写入终端。 这是完全不能理解的,所以没有意义。
bunzip2 (
或bzip2 -d )解压缩所有指定的文件。 将检测到并忽略不是由bzip2创建的文件,并发出警告。 bzip2试图从压缩文件推测解压缩文件的文件名。 如下所示。
filename.bz2becomesfilename
filename.bzbecomesfilename
filename.tbz2becomes filename.tar
filename.tbzbecomesfilename.tar
anyothernamebecomesanyothername.out
如果文件不以. bz2、 bz、 tbz2或. tbz结尾,bzip2会抱怨无法推测原始文件的名称,并使用原始名称添加. out。 与压缩一样,如果不指定文件名,则会发生从标准输入到标准输出的解压缩。 bunzip2正确解压缩作为两个或多个压缩文件级联的文件。 结果,连接了对应的未压缩文件。 还支持对与压缩文件的连接进行完整性测试。
也可以通过标记"-c "将文件压缩或解压缩到标准输出。 这样可以压缩和解压缩多个文件。 结果的输出依次输入stdout。 以这种方式压缩多个文件将生成包含多个压缩文件表示形式的流。 只有在bzip2版本0.9.0或更高版本中才能正确解压缩这样的流。 解压缩流中的第一个文件时,以前版本的bzip2将停止。
bzcat (
或bzip2 -dc ) )将所有指定的文件解压缩到标准输出。 BZIP2按此顺序从环境变量BZIP2和bzip中读取参数,并在从命令行读取参数之前对其进行处理。 这是提供默认参数的方便方法。
即使压缩文件稍大于原始文件,也会始终执行压缩。 小于100字节的文件可能会很大,因为压缩机制在50字节的范围内有一定的开销。 包含大多数文件压缩器输出的随机数据编码约为8.05位/字节,扩展幅度约为0.5%%u3002
bzip2
使用32位crc验证文件的解压缩版本是否与原始文件相同。 这样可以防止压缩数据损坏,并防止bzip2中未检测到的错误。 数据损坏的可能性微乎其微,每处理大约40亿个文件就有机会。 但是,请注意,由于检查发生在解冻时,所以只能告诉你事情有什么不对劲。 它无法帮助恢复原始的未压缩数据。 您可以尝试使用bzip2recover从损坏的文件中恢复数据。
返回值: 0表示成功,1表示环境问题(未找到文件,无效标志,I/O错误,c ),2表示已损坏的压缩文件,3表示内部完整性错误(例如错误),bzip2死机。
此命令适用于: RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1
语法
bzip2[-cdfkqstvzvl 123456789 ] [ filenames…]
2
、选项列表
选项
说明
- h |help
帮助信息
- v |版本
显示命令的版本信息
- c |stdout
将解压缩或解压缩文件写入标准输出
- d |decompress
解冻
z|- compress
添加到-d :强制压缩,而不考虑调用名称
- t |test
检查指定文件的完整性,但不要解压缩。 这确实尝试了解冻,并放弃了结果。
- f |force
强制执行
- k |keep
解压缩后保留源文件
- s |small
减少内存使用量,用于压缩、解压缩和测试。 使用修改后的算法解压缩并测试文件。 该算法每块只需要2.5字节。 这意味着,尽管速度是正常速度的一半,但任何文件都可以解压缩到2300 k内存中。
在压缩期间,-s选择200 k的块大小。 这样可以以压缩率为代价,将内存使用量限制在大致相同的数量上。 简单来说,如果机器内存不足,请使用-s执行所有操作。 请参阅以下内存管理。
- l |license|- v |version
列出gzip许可证
- q |quite
跳过所有警告消息
- v |verbose
显示详细的执行过程
- 1至- 9
指定压缩率并将块大小设定为100k、200k和900K。 解冻时无效。 “-1”等效于“fast”,“-9”等效于“best”。
- v |verbose
显示执行进程
-
&; #039; -&; #039; 即使以开头,也会将所有后续参数视为文件名。 这样可以处理以“-”开头的文件。 例如,请参见
bzip2—-myfilename
”。
repetitive-fast
repetitive-best
这些标记在0.9.5版以上是多余的。 它们大致控制了排序算法在早期版本中的行为,有时很有用。 0.9.5及更高版本的改进算法不关联这些标志
3
、内存管理
bzip2
用块压缩大文件。 块大小同时影响压缩率、压缩和解压缩所需的内存量。 标志-1到-9指定块大小分别为100000字节到900000字节(缺省)。 解压缩时,从压缩文件的标头中读取用于压缩的块大小,并分配足够的内存来解压缩文件。 块大小保存在压缩文件中,因此在解压缩过程中与标志-1~-9无关,因此将被忽略。 压缩和解压缩要求(以字节为单位)估计如下
压缩: 400 k ( 8x块大小) )。
decompression:100k(4xblocksize )、or 100 k ( 2.5 xblocksize ) )。
更大的块大小带来快速减少的边际收益。 大多数压缩来自块大小的前300k。 在小型机器上使用bzip 2时,请记住这一点。 同样重要的是,要意识到在压缩时间必须选择块大小来解压缩内存。
对于以缺省900k块大小压缩的文件,bunzip2需要大约3700千字节来解压缩。 为了支持4MB计算机上的文件解压缩,bunzip2可以选择使用大约一半的内存(约2300千字节)进行解压缩。 解冻速度也会减半,所以请仅在必要时使用此选项。 相关标志为-s。 通常,尝试使用允许的最大块大小的内存约束,因为可以最大限度地进行压缩。 压缩和解压缩速度几乎不受块大小的影响。
另一个点适用于适用于一个块的文件。 这意味着在大多数情况下,将使用块大小较大的文件。 接触的实际内存量与文件大小成正比。 因为文件比块小。 例如,如果使用标志-9将文件长度压缩为20000字节,压缩器将分配大约7600k的内存,但只能访问400k 20000*8=56万字节的内存。 同样,解压缩程序分配3700k,但只能访问100k 20000*4=180 k。
下表汇总了按块大小列出的最大内存使用情况
compressdecompressdecompresscorpus
Flagusageusage-s usageSize
-11200k500k350k914704
-22000k900k600k877703
-32800k1300k850k860338
-43600k1700k1100k846899
-54400k2100k1350k845160
-65200k2500k1600k838626
-76100k2900k1850k834096
-86800k3300k2100k828642
-97600k3700k2350k828642
4
从损坏的文件中恢复数据
bzip2
将文件压缩为块。 通常达到900千字节。 每个块都被独立处理。 如果介质或传输错误损坏了multi-block .bz2文件,则可以从未损坏的文件块中恢复数据。 每个块的压缩表示由48位模式分隔,并且可以通过合理确定性来定位块边界。 每个块都有自己的32位CRC,因此可以将损坏的块与未损坏的块区分开。
bzip2恢复
是一个简单的程序,用于定位. bz2文件中的块并将每个块写入自己的. bz2文件。 然后,可以使用bzip 2t测试结果文件的完整性并解压缩未损坏的文件。
bzip2恢复
接受参数,即损坏文件的名称,写入包含提取的块的文件“rec00001file.bz2”、“rec00002file.bz2”等。 输出文件名被设计为在以后的处理中使用通配符。 例如," bzip2- dcrec * file.BZ2recovered _ data "将按正确的顺序处理文件。
处理大型bz2文件时,bzip2恢复应该是最方便的,因为它包含许多块。 用于单个损坏的文件显然是徒劳的。 因为损坏的区块无法恢复。 如果希望最小化由于介质或传输错误导致的数据丢失的可能性,请考虑使用较小的块大小进行压缩。
5
、执行情况说明
在的排序阶段收集文件中的相似字符串。 因此,包含大量重复符号的文件(如“aabaabaabaab .”)可能会比正常压缩速度慢。 在这方面,0.9.5或更高版本比以前的版本好得多。 最坏的压缩时间与平均压缩时间之比为10:1左右。 在以前的版本中,这个数字类似于100:1。 如果需要,可以使用-vvvv选项非常详细地监视进度。 减压速度不受这些现象的影响。
bzip 2
通常分配和操作数兆字节的内存,并以相当随机的方式对其进行充电。 这意味着压缩和解压缩的性能在很大程度上取决于机器能够服务于缓存丢失的速度。 因此,通过大幅更改代码以降低渗漏率,可以获得不成比例的大幅性能提高。 我认为bzip 2在有非常大缓存的机器上能发挥最好的性能。
7
、实例
1
)文件压缩
[root@localhost weijie]#
bzip2 1.c//
压缩
1.c
源文件将被删除
[root@localhost weijie]#
洛杉矶地铁
11.C1.c.bz22.C3.C4.C5.C6.c至bak
[root@localhost weijie]#
bzip2 -c 2.c res.bz2//
把
1.c
压缩到
res
源文件不动
[root@localhost weijie]#
洛杉矶地铁
11.C1.c.bz22.C3.C4.C5.C6.c至bak RES.bz2
2
)解冻
[root@localhost weijie]#
bzip2 -d res.bz2//
解冻
[root@localhost weijie]#
洛杉矶地铁
11.C1.c.bz22.C3.C4.C5.C6.c至bak RES
3
)将两个文件压缩成一个文件
[root@localhost weijie]#
cat 1.c 2.c//
输出两个文件的内容
问候世界、
i am david .
i love linux,
爱情码。
123
23
212
[root@localhost weijie]#
bip 2C1.cfoo.gz /
把
1.c
压缩到
foo
[root@localhost weijie]#
bip 2C2.cfoo.gz /
把
2.c
压缩到
foo
[root@localhost weijie]# b
gzip2 -d foo.gz//
解冻
foo
[root@localhost weijie]#
cat foo//
显示
foo
请参阅
问候世界、
i am david .
i love linux,
爱情码。
123
23
212
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn