Bzip2 命令示例
- 压缩单个文件
这将压缩 file.txt 并创建 file.txt.bz2,注意这将删除原始 file.txt 文件。
- 压缩单个文件
bzip2 file.txt
- 2.一次压缩多个文件
这将压缩命令中指定的所有文件,再次注意,这会将 file1.txt、file2.txt 和 file3.txt 指定的原始文件删除为 file1.txt.bz2、file2.txt.bz2 和 file3.txt。 bz2
bzip2 file1.txt file2.txt file3.txt
- 压缩单个文件,保留原文件
我们可以改为保留原始文件并创建压缩副本。
- 压缩单个文件,保留原文件
bzip2 -c file.txt > file.txt.bz
-c 标志将 file.txt 的压缩副本输出到 stdout,然后将其发送到 file.txt.bz2,同时保留原始 file.txt 文件。
使用 -k 选项也可以保留原始文件,因此我们也可以运行以下命令来获得相同的结果.
bzip2 -k file.txt
- 4.解压一个bzip2压缩文件
要解压缩过程并取回已压缩的原始文件,我们可以使用 bzip2 命令本身或者 bunzip2,它也是 bzip2 包的一部分。
bzip2 -d file.txt.bz2
或者
bunzip2 file.txt.bz2
这两个命令都会产生相同的结果,将 file.txt.bz2 解压缩为 file.txt,删除压缩的 file.txt.bz2 文件。
与示例 3 类似,可以解压缩文件并保留原始 .bz2 文件,如下所示。
bunzip2 -c file.txt.bz2 > file.txt
或者
bunzip2 -k file.txt.bz2
- 列出压缩信息
使用 -v 或者 --verbose 标志,我们可以看到有关文件压缩率的有用信息,这向我们显示压缩节省了多少磁盘空间。可以添加另外的“v”标志以获得更深入的信息。
- 列出压缩信息
[jack@onitroad ~]# bzip2 -v linux-3.18.19.tar linux-3.18.19.tar: 6.015:1, 1.330 bits/byte, 83.37% saved, 580761600 in, 96552670 out. [jack@onitroad ~]# ls -lah -rw-r--r--. 1 root root 554M Jan 22 10:38 linux-3.18.19.tar -rw-r--r--. 1 root root 93M Jan 22 10:38 linux-3.18.19.tar.bz2
- 调整压缩级别
使用 bzip2 应用于文件的压缩级别可以指定为 1(较少压缩)和 9(最佳压缩)之间的值。选项 1 将块大小设置为 100k,选项 2 将其设置为 200k,一直到使用 900k 的选项 9. 这是因为 bzip2 以块为单位压缩文件,块大小会影响压缩率和压缩和解压缩所需的内存量。
下面的示例比较了 -1 和 -9 之间的差异,如图所示,在使用 linux 内核进行测试时,-9 选项仅需要几秒钟的时间,并且将压缩级别提高了 3% 以上。
- 调整压缩级别
[jack@onitroad ~]# time bzip2 -v -1 linux-3.18.19.tar linux-3.18.19.tar: 5.038:1, 1.588 bits/byte, 80.15% saved, 580761600 in, 115280806 out. real 1m18.487s user 1m18.081s sys 0m0.405s [jack@onitroad ~]# time bzip2 -v -9 linux-3.18.19.tar linux-3.18.19.tar: 6.015:1, 1.330 bits/byte, 83.37% saved, 580761600 in, 96552670 out. real 1m21.730s user 1m21.505s sys 0m0.219s
-1 也可以用标志--fast 指定,而选项-9 也可以用标志--best 指定。默认情况下,bzip2 使用 -9 的压缩级别,这些选项主要用于 gzip 兼容性,例如 --fast 不会使事情变得明显更快,如上所示,而 --best 调用默认行为。
- 7.压缩目录
在 tar 命令的帮助下,我们可以创建一个包含整个目录的 tar 文件,并使用 bzip2 压缩结果。我们可以一步执行全部操作,因为 tar 命令允许我们指定要使用的压缩方法。
tar cjvf etc.tar.bz2 /etc/
本示例创建了整个 /etc/ 目录的压缩 etc.tar.bz2 文件。 tar 标志如下,'c' 创建一个新的 tar 存档,'j' 指定我们要使用 bzip2 压缩,'v' 提供详细信息,'f' 指定要创建的文件。生成的 etc.tar.bz2 文件包含 /etc/ 中使用 bzip2 压缩的所有文件。
- 完整性测试
-t 或者 --test 标志可用于检查压缩文件的完整性。
在普通文件上,结果将列为 OK,如下所示。
- 完整性测试
[jack@onitroad ~]# bzip2 -tv linux-3.18.19.tar.bz2 linux-3.18.19.tar.bz2: ok
我现在已经用文本编辑器手动修改了这个文件并添加了一个随机值,本质上是引入了损坏,现在它不再有效。
[jack@onitroad ~]# bzip2 -tv linux-3.18.19.tar.bz2 linux-3.18.19.tar.bz2: data integrity (CRC) error in data You can use the `bzip2recover' program to attempt to recover data from undamaged sections of corrupted files.
压缩的 .bz2 文件利用循环冗余校验 (CRC) 来检测错误。 CRC 值可以通过运行带有 -vv 标志的 bzip2 命令来查看,如下所示。
[jack@onitroad test]# bzip2 -vv file.txt file.txt: block 1: crc = 0x3f1075ca, combined CRC = 0x3f1075ca, size = 8 final combined CRC = 0x3f1075ca 0.174:1, 46.000 bits/byte, -475.00% saved, 8 in, 46 out.
- 连接多个文件
多个文件可以连接成一个 .bz2 文件。
- 连接多个文件
bzip2 -c file1.txt > files.bz2 bzip2 -c file2.txt >> files.bz2
files.bz2 现在包含 file1.txt 和 file2.txt 的内容,如果解压缩 files.bz2,我们将得到一个名为“files”的文件,其中包含两个 .txt 文件的内容。输出类似于运行“cat file1.txt file2.txt”。相反,如果我们想创建包含多个文件的单个文件,我们可以使用支持 bzip2 压缩的 tar 命令,如上面示例 7 中所述。
- bzip2 包含的添加命令
bzip2 包提供了一些非常有用的命令来处理压缩文件,例如 bzcat、bzgrep 和 bzless/bzmore。
正如我们可能从命令的名称中看出的那样,它们本质上是 cat、grep 和 less/more 命令,但它们直接对压缩数据起作用。这意味着我们可以轻松查看或者搜索压缩文件的内容,而无需在第二步中对其进行解压缩和查看或者搜索。
- bzip2 包含的添加命令
[jack@onitroad test]# bzcat test.txt.bz2 test example text [jack@onitroad test]# bzgrep exa test.txt.bz2 example
这在搜索或者查看在日志轮换期间压缩的日志文件时特别有用。
在开始之前,我们需要安装 bzip2 包,默认情况下可能已经安装了它,但是如果需要,我们现在可以安装它。
RHEL:
yum install bzip2
Debian:
apt-get install bzip2