本页使用了标题或全文手工转换

gzip

维基百科,自由的百科全书
跳转至: 导航搜索
Gzip
Gzip-Logo.png
原作者
開發者 GNU计划
初始版本 1992年10月31日,​25年前​(1992-10-31
编程语言 C
操作系统 Unix-like
类型 数据压缩
许可协议 GNU GPLv3
網站 www.gnu.org/software/gzip/
源代码库 git.savannah.gnu.org/cgit/gzip.git
NetBSD Gzip / FreeBSD Gzip
開發者 NetBSD基金会
编程语言 C
操作系统 跨平台
类型 数据压缩
许可协议 BSD许可证
網站 www.gnu.org/software/gzip/、http://www.gzip.org/、http://www.gzip.org/index-f.html
源代码库 http://git.savannah.gnu.org/cgit/gzip.git、https://svnweb.freebsd.org/base/head/usr.bin/gzip/、http://cvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/gzip/

Gzip是若干種文件壓縮程序的簡稱,通常指GNU計劃的實現,此處的gzip代表GNU zip。也經常用來表示gzip這種文件格式。軟件的作者是Jean-loup Gailly和Mark Adler。在1992年10月31日第一次公開發布,版本號0.1,1993年2月,发布了1.0版本。

OpenBSD中所包含的gzip版本實際上是compress程序,其對gzip文件的支持在OpenBSD 3.4中被添加,此處的g代表免費(gratis[1]

文件格式[编辑]

gzip
扩展名 .gz
互联网媒体类型 application/gzip[2]
统一类型标识 org.gnu.gnu-zip-archive
特征签名 0x1f8b
开发者 Jean-Loup Gailly and Mark Adler
格式类型 数据压缩
自由格式

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

文件格式说明:

  • 10字节的头,包含幻数、版本号以及时间戳
  • 可选的扩展头,如原文件名
  • 文件体,包括DEFLATE压缩的数据
  • 8字节的尾注,包括CRC-32校验和以及未压缩的原始数据长度

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

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

gzip命令的常用选项[编辑]

  • -c,--stdout将解压缩的内容输出到标准输出,原文件保持不变
  • -d,--decompress解压缩
  • -f,--force强制覆盖旧文件
  • -l,--list列出压缩包内储存的原始文件的信息(如,解压后的名字、压缩率等)
  • -n,--no-name压缩时不保存原始文件的文件名和时间戳,解压缩时不恢复原始文件的文件名和时间戳(此时,解出来的文件,其文件名为压缩包的文件名)
  • -N,--name压缩时保存原始文件的文件名和时间戳,解压缩时恢复原始文件的文件名和时间戳
  • -q,--quiet抑制所有警告信息
  • -r,--recursive递归
  • -t,--test测试压缩文件完整性
  • -v,--verbose冗余模式(即显示每一步的执行内容)
  • -1、-2、...、-9压缩率依次增大,速度依次减慢,默认为-6

衍生品和其它应用[编辑]

在大多数Linux发行版中,通过使用 z 选项来提取.tar.gz格式的压缩文件,例如:tar -zxf file.tar.gz

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

gzip在HTTP压缩,一种在万维网中加速传输HTML和其他内容的技术。它是在 RFC 2016 中规定的三种标准HTTP压缩格式之一。这个RFC(征求意见稿)页定义了一种叫做"DEFLATE"的zlib格式,它和gzip格式相同,除了gzip添加了11字节头部和尾部的负载。但是,现在还是建议使用gzip而不是zlib,因为根据 RFC 1950, IE还没有正确的实现该标准,还不能处理zlib格式。

zlib DEFLATE 已经在 Protable Network Graphics(PNG)格式中使用。

自20世纪90年代末期以来,一个基于数据块排序算法的文件压缩工具bzip2作为gzip的替代者逐渐得到流行,它可以生成相当小的压缩文件,尤其是对于源代码和其他结构化文本更是这样,但代价是最高达4倍的内存与处理器时间消耗。bzip2压缩的tar包传统上叫作.tar.bz2.tbz

AdvanceCOMP英语AdvanceCOMP7zip内部也有一个DEFLATE实现,可以制作gzip兼容的压缩文件,与gzip相比有更高的压缩率,不过比较耗费处理器的处理时间。

gzip压缩文件对应的解压程序是gunzip

参见[编辑]

参考资料[编辑]

  1. ^ OpenBSD gzip(1) manual page. OpenBSD. [2007-07-23]. 
  2. ^ RFC 6713 - The 'application/zlib' and 'application/gzip' Media Types

外部链接[编辑]