Juju_swing

gzip

互联网 2024-06-16 06:07:20

gzip 是 GNU zip 的缩写,它是一个 GNU 自由软件的文件压缩程序,也经常用来表示 gzip 这种文件格式。软件的作者是 Jean-loup Gailly 和 Mark Adler。

gzip 的基础 是 DEFLATE,DEFLATE 是 LZ77 与哈夫曼编码的一个组合体。DEFLATE 最初是作为 LZW 以及其它受专利保护的数据压缩算法的替代版本而设计的,当时那些专利限制了 compress 以及其它一些流行的归档工具的应用。

文件格式说明:

10 字节的头,包含幻数、版本号以及时间戳

可选的扩展头,如原文件名

文件体,包括 DEFLATE 压缩的数据

8 字节的尾注,包括 CRC-32 校验和以及未压缩的原始数据长度

尽管这种文件格式允许多个这样的数据拼接在一起,在解压时也把它们当作拼接在一起的数据,但是通常 gzip 仅仅用来压缩单个文件。多个文件的压缩归 档通常是首先将这些文件合并成一个 tar 文件,然后使用 gzip 进行压缩,最后生成的 .tar.gz 或者 .tgz 文件,这就是所谓的 “tar 压缩包” 或者 “tarball”。

注意不要将 gzip 和 ZIP 压缩格式混淆。ZIP 也使用 DEFLATE 算法,而且可移植性更好,并且不需要一个外部的归档工具就可以包容多个文件。但是,由于 ZIP 对每个文件进行单独 压缩而没有利用文件间的冗余信息 (固实压缩),所以 ZIP 的压缩率要稍逊于 tar 压缩包。

zlib 是 DEFLATE 算法的实现库,它的 API 同时支持 gzip 文件格式以及一个简化的数据流格式。zlib 数据流格式、DEFLATE 以及 gzip 文件格式均已被标准化成了,分别是 RFC 1950、RFC 1951 以及 RFC 1952。