6.5 用bunzip或bzip压缩
bunzip2是另一种与gzip
类似的压缩技术。bzip2
通常能够生成比gzip
更小(压缩比更高)的文件。所有Linux发行版都包含了这个工具。让我们看看bzip2
的用法。
6.5.1 实战演练
用bzip2
进行压缩:
- $ bzip2 filename
- $ ls
- filename.bz2
bzip2
会删除原文件并生成名为filename.bzip2的压缩文件。
解压缩bzip2格式的文件:
- $ bunzip2 filename.bz2
bzip2
会删除filename.bz2并生成filename的未压缩形式。
bzip2
可以从stdin
中读入文件,也可以将压缩文件写出到stdout
。
要从stdin
读入并写出到stdout
,使用:
- $ cat file | bzip2 -c > file.tar.bz2
-c
用于将输出指定到stdout
。
我们通常将bzip2
与归档文件结合使用。当进行归档及提取的时候,可以用tar
命令的 -j
选项来压缩归档文件。
用下面的方法可以创建经由bzip2压缩过的归档文件。
- 方法 1
- $ tar -cjvvf archive.tar.bz2 [FILES]
或者
- $ tar -cavvf archive.tar.bz2 [FILES]
选项-a
指定由文件扩展名自动判断压缩格式。
- 方法 2
首先创建一个归档文件:
- $ tar -cvvf archive.tar [FILES]
压缩归档文件:
- $ bzip2 archive.tar
如果我们要对成百上千个文件进行归档,那上面的命令可能就不管用了。要解决这个问题,需要使用-r
选项并借助一个循环来将文件逐个添加到归档文件中。请参考6.4节中类似的解决方法。
提取bzip2压缩格式的归档文件中的内容,可以使用:
- $ tar -xjvvf archive.tar.bz2 -C extract_directory
其中:
-x
用于提取内容;-j
表示采用bzip2格式;-C
指定用于存放提取文件的目录。
或者,使用下面的命令:
- $ tar -xavvf archive.tar.bz2 -C extract_directory
-a
会自动检测压缩格式。
6.5.2 补充内容
bunzip
还有其他选项,可用以执行多种功能。让我们简单了解几个。
- 保留输入文件
使用bzip2
或bunzip2
时,它会删除输入文件并生成压缩过的输出文件。我们可以使用选项-k
来避免删除输入文件。例如:
- $ bunzip2 test.bz2 -k
- $ ls
- test test.bz2
- 压缩率
我们可以指定压缩率,从1级到9级(其中,第1级压缩率最低,但是压缩速度最快;第9级压缩率最高,但是速度要慢得多)。
例如:
- $ bzip2 -9 test.img
该命令规定的是最大压缩率。
6.5.3 参考
6.2节讲解了tar
命令。