6.5 用bunzip或bzip压缩

bunzip2是另一种与gzip类似的压缩技术。bzip2通常能够生成比gzip更小(压缩比更高)的文件。所有Linux发行版都包含了这个工具。让我们看看bzip2的用法。

6.5.1 实战演练

bzip2进行压缩:

  1. $ bzip2 filename
  2. $ ls
  3. filename.bz2

bzip2会删除原文件并生成名为filename.bzip2的压缩文件。

解压缩bzip2格式的文件:

  1. $ bunzip2 filename.bz2

bzip2会删除filename.bz2并生成filename的未压缩形式。

bzip2可以从stdin中读入文件,也可以将压缩文件写出到stdout

要从stdin读入并写出到stdout,使用:

  1. $ cat file | bzip2 -c > file.tar.bz2

-c用于将输出指定到stdout

我们通常将bzip2与归档文件结合使用。当进行归档及提取的时候,可以用tar命令的 -j选项来压缩归档文件。

用下面的方法可以创建经由bzip2压缩过的归档文件。

  • 方法 1
  1. $ tar -cjvvf archive.tar.bz2 [FILES]

或者

  1. $ tar -cavvf archive.tar.bz2 [FILES]

选项-a指定由文件扩展名自动判断压缩格式。

  • 方法 2

首先创建一个归档文件:

  1. $ tar -cvvf archive.tar [FILES]

压缩归档文件:

  1. $ bzip2 archive.tar

如果我们要对成百上千个文件进行归档,那上面的命令可能就不管用了。要解决这个问题,需要使用-r选项并借助一个循环来将文件逐个添加到归档文件中。请参考6.4节中类似的解决方法。

提取bzip2压缩格式的归档文件中的内容,可以使用:

  1. $ tar -xjvvf archive.tar.bz2 -C extract_directory

其中:

  • -x用于提取内容;

  • -j表示采用bzip2格式;

  • -C指定用于存放提取文件的目录。

或者,使用下面的命令:

  1. $ tar -xavvf archive.tar.bz2 -C extract_directory

-a会自动检测压缩格式。

6.5.2 补充内容

bunzip还有其他选项,可用以执行多种功能。让我们简单了解几个。

  • 保留输入文件

使用bzip2bunzip2时,它会删除输入文件并生成压缩过的输出文件。我们可以使用选项-k来避免删除输入文件。例如:

  1. $ bunzip2 test.bz2 -k
  2. $ ls
  3. test test.bz2
  • 压缩率

我们可以指定压缩率,从1级到9级(其中,第1级压缩率最低,但是压缩速度最快;第9级压缩率最高,但是速度要慢得多)。

例如:

  1. $ bzip2 -9 test.img

该命令规定的是最大压缩率。

6.5.3 参考

6.2节讲解了tar命令。