Bzip2 命令示例

    1. 压缩单个文件
      这将压缩 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
    1. 压缩单个文件,保留原文件
      我们可以改为保留原始文件并创建压缩副本。
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
    1. 列出压缩信息
      使用 -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
    1. 调整压缩级别
      使用 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 压缩的所有文件。

    1. 完整性测试
      -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.
    1. 连接多个文件
      多个文件可以连接成一个 .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 中所述。

    1. bzip2 包含的添加命令
      bzip2 包提供了一些非常有用的命令来处理压缩文件,例如 bzcat、bzgrep 和 bzless/bzmore。
      正如我们可能从命令的名称中看出的那样,它们本质上是 cat、grep 和 less/more 命令,但它们直接对压缩数据起作用。这意味着我们可以轻松查看或者搜索压缩文件的内容,而无需在第二步中对其进行解压缩和查看或者搜索。
[jack@onitroad test]# bzcat test.txt.bz2
test
example
text
[jack@onitroad test]# bzgrep exa test.txt.bz2
example

这在搜索或者查看在日志轮换期间压缩的日志文件时特别有用。

linux Bzip2 示例

在开始之前,我们需要安装 bzip2 包,默认情况下可能已经安装了它,但是如果需要,我们现在可以安装它。

RHEL:

yum install bzip2

Debian:

apt-get install bzip2
日期:2020-07-07 20:56:59 来源:oir作者:oir