云网牛站
所在位置:首页 > Linux教程 > Linux常见压缩格式Tar、Zip和Gz格式之不同

Linux常见压缩格式Tar、Zip和Gz格式之不同

2017-10-27 15:48:36作者:Linux编辑稿源:系统极客

Linux 系统中大家在下载文件时常见的压缩文件有 .tar、.zip 或 .gz 等扩展名,大多数用户都已经见怪不怪了。那 Linux 中为什么要搞出这么多种压缩格式,Tar、Zip 和 Gz 之间到底有什么区别与不同呢?本文就为大家一一道来。

 

Tar、Zip和Gz格式的不同

Tar、Zip 和 Gz 之间的不同用最为简洁的描述来说可归纳为:

.tar 未压缩的归档文件

.zip (通常)压缩归档文件

.gz 使用gzip压缩的文件(归档或不归档)

 

存档文件的历史

与 Unix 和类 Unix 系统一样,故事开始于很久之前的七十年代。1979 年 1 月的一个清晨,Tar 实用程序首次作为 Unix V7 的一部分正式面世。Tar 程序当时主要被设计为往磁带上批量高效写入文件的一种方式。现在,虽然现在大多数 Linux 用户都已经不知道磁带驱动器是什么鬼了,但 tarballs(tar 的昵称)仍被常用于将多个文件甚至整个目录树打包到单一文件当中。

需要 Linux/Unix 用户注意的是,普通的 tar 格式文档只进行归档操作而不进行压缩。换句话说就是,如果你 tar 100 个 50kb 的文件得到的 tar 归档文件大小应该为 5000kb 左右。

使用 Tar 进行文件归档的唯一好处就是减少某种粒度磁盘空间的分配。(例如在簇大小为 4kb 的磁盘上 1 字节的文件也要占用 4kb 磁盘空间,若有 1000 个 1 字节的文件分散在此磁盘上的话,则会占用 4MB 大小,而使用 Tar 归档之后则只占用 1MB 左右大小。)

值得一提的是,tar 并非 Linux/Unix 中创建归档文件的唯一方式。程序员朋友应该知道 ar,它大多情况下主要用于创建静态库,实际它也是可用来创建其它种类归档的,例如 Debian 系统中使用的 .deb 包文件就是 ar 存档。而 macOS 的 mpkg 包是使用 gzip 压缩的 cpio 档。不过 ar 和 cpio 用起来不像 Tar 这样友好、简单,所以 tar 的受欢迎程度更高,普及更广。

虽然归档是种不错的选择,但随着时间的推移和个人 PC 时代的到来,人们意识到可通过压缩数据的方式来大量节省存储成本。所以 10 年后随 MS-DOS 出现的 zip 文档便是支持压缩的归档格式,zip 最常见的压缩方式是采用 LZ77 算法实现的 deflate。由于它由 PKWARE 商业开发,所以 zip 格式也受专利保护多年。因此,为不侵犯到 PKWARE 的专利,同样采用 LZ77 算法的 gzip 格式被推出并广泛使用。

Unix 的哲学就是把某事做到最好,所以 gzip 只被设计为压缩文件。因此,为了创建压缩归档,必需先使用 tar 创建归档,之后再对归档文件进行压缩,因此才有了 .tar.gz 文件(为遵循 8.3 MS-DOS 文件名称限制,又被简称为 .tgz)。

随着技术的不断发展,具有更高压缩比的压缩算法也一一被实现,例如:在 bzip2 中实现的 Burrows-Wheeler 算法(.tar.bz2 存档)和 LZMA 算法实现的 .xz 存档。

现在,用户已经可以在 Linux 和 Windows 中自由使用任何归档文件格式。由于 zip 格式已经被 Windows 操作系统原生支持,因此这种格式特别适合跨平台环境。

 

Tar、Zip和Gz格式效率测试

下面我们所讨论的是 Tar、Zip 和 Gz 文件格式压缩、归档后的磁盘空间效率而不是时间效率,如下是对 100MB 流行格式文件的测试对比:

文件类型

.jpg

.mp3

.mp4

.odt

.png

.txt

文件数

2163

45

279

2990

2072

4397

磁盘占用

98M

99M

99M

98M

98M

98M

tar

94M

99M

98M

93M

92M

89M

zip (不压缩)

92M

99M

98M

91M

91M

86M

zip (deflate)

87M

98M

93M

85M

77M

28M

tar + gzip

86M

98M

93M

82M

77M

27M

tar + bz2

87M

98M

93M

42M

71M

22M

tar + xz

70M

98M

22M

348K

51M

19M

Linux常见压缩格式Tar、Zip和Gz格式之不同

由于 jpg、mp3、mp4 已经是压缩封装的文件,所以再打包压缩的效果一定不会太好。

精选文章
热门文章