在 windows 下,对于压缩这个概念,其实指的的数据压缩以及数据归档。
数据压缩
bzip2工具
bzip2 工具要的文件是以 .bz2 结尾,在压缩大型的二进制文件领域非常流行。
bzip2 软件包有以下几个工具
- bzip2:用来压缩文件
- bzcat:用来显示压缩的文本文件的内容
- bunzip2:用来解压压缩后的 .bz2 文件
- bzip2recover:用来尝试恢复损毁的压缩文件
例如 bzip2 file
可以用来生成压缩数据 file.bz2,bzcat file.bz2
可以用来查看压缩的文本文件的内容,bunzip2 file.bz2
用来解压。
也可以用 bzip2 file1 file2
同时多个文件进行压缩,会自动生成 file1.bz2,file2.bz2 两个压缩文件,但是 bzip2 不能对一个目录下的文件进行压缩。
bzip2 -k
bzip2 file
是可以压缩文件 file,并且自动生成压缩文件 file.bz2,而且还有一点,file 文件被移除了,这就有点不开心了,而 -k 参数可以在解压和压缩的时候,保留源文件,如 bzip2 -k file
gzip工具
gzip 是 GNU 项目发起的的压缩工具,生成的压缩文件已 .gz 结尾,软件包邮如下工具
- gzip:用来压缩文件
- gzcat:用来查看压缩过的文本文件的内容
- gunzip:用来解压文件
gzip -r
gzip 的基本用法与 bzip2 类似,但是 gzip -r
可以对目录的所有文件生成压缩文件 或 解压目录下的所有压缩文件。
上图中可以看到如何用 gzip -r dir1/
对目录进行压缩,再看看用 gzip -r dir1
对目录下的压缩文件进行解压
zip工具
Linux 下 zip 软件包有5个
- zip:创建一个压缩文件,包含指定的文件和目录
- zipcloak:创建一个加密的压缩文件,包含指定的文件和目录
- zipnote:从 zip 文件提取批注
- zipsplit:将一个现有zip文件分割成多个更小的固定大小的文件
- unzip:从压缩过的 zip 文件中提取文件和目录
在命令行输入 zip 即可查看参数说明
zip 工具的强大之处在于,可以将多个文件压缩,并归档为一个文件。
zip -r
zip 工具还可以用 zip -r
将一个目录进行压缩
可以看到用 zip -r
不仅对目录下的每一个文件 进行了压缩,还保留的目录的完整性,这个就是与 windows 下的压缩是一样的道理。
数据归档
bzip2, gzip 虽然可以对文件进行压缩,但是并不能把压缩后的文件进行归档,然而 zip 可以做到既压缩有归档。 但是 zip 并不是 Unix 和 Linux 中的标准归档工具,而是 tar 命令。
一般的模式,总结如下
tar mode [options] file/directory
mode | 描述 |
---|---|
-c | 创建一个归档文件 |
-r | 追加文件到已有的归档文件末尾,这个参数只能作用于未压缩文件,-f 参数是必须的 |
-t | 列出已有归档文件的内容 |
-u | 将比归档文件中已有的同名文件新的文件追加到该归档文件中 |
-x | 从归档文件中提取文件 |
options | 描述 |
---|---|
-C | 切换到指定目录 |
-f | 输出结果到文件或设备file |
-j | 将输出重定向给 bzip2 命令来压缩内容 |
-v | 在处理文件时候显示文件到标准输出 |
-z | 将输出重定向给 gzip 命令来压缩文件 |
例如,创建一个归档文件
tar -cvf test.tar test1/ test2/
-f 参数后面指定归档文件名,-c 模式指的是要创建归档文件,-v 把处理文件显示的标准输出上
然后,列出 test.tar 的内容
tar -tf test.tar
然后,再提取归档文件内容
tar -xvf test.tar
但是,这些只是简单的归档操作,而并没有压缩,从上面命令看,可以加上 -z 和 -j 来压缩内容
tar -zcvf test.tgz test1/ test2/
很多开源软件下载后,都是以 .tgz 结尾的,这些就是经过压缩的的 tar 文件。