gzip
维基百科,自由的百科全书
|
gzip |
|
|---|---|
| 開發 | GNU Project |
| 最新版本 | 1.3.12 / 2007-04-13) |
| 編程語言 | C |
| 作業系統 | Cross-platform |
| 類型 | data compression |
| 許可協議 | GNU GPL |
| 網站 | http://www.gnu.org/software/gzip/ |
目录 |
[编辑] 概览
gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。1992年10月31日第一次公开发布,版本号是0.1。
[编辑] 文件格式
gzip的基础是DEFLATE,DEFLATE是LZ77与哈夫曼编码的一个组合体。DEFLATE最初是作为LZW以及其它受专利保护的数据压缩算法的替代版本而设计的,当时那些专利限制了compress以及其它一些流行的归档工具的应用。
文件格式说明:
尽管这种文件格式允许多个这样的数据拼接在一起,在解压时也把它们当作拼接在一起的数据,但是通常gzip仅仅用来压缩单个文件。多个文件的压缩归档通常是首先将这些文件合并成一个tar文件,然后使用gzip进行压缩,最后生成的.tar.gz或者.tgz文件,这就是所谓的“tar压缩包”或者“tarball”。
注意不要将gzipZIP压缩格式混淆。ZIP也使用DEFLATE算法,而且可移植性更好,并且不需要一个外部的归档工具就可以包容多个文件。但是,由于ZIP对每个文件进行单独压缩而没有利用文件间的冗余信息(固实压缩),所以ZIP的压缩率要稍逊于tar压缩包。
zlib是DEFLATE算法的实现库,它的API同时支持 gzip文件格式以及一个简化的数据流格式。zlib数据流格式、DEFLATE以及gzip文件格式均已被标准化成了,分别是RFC 1950、RFC 1951以及RFC 1952。
[编辑] 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
[编辑] 其它应用
HTTP/1.1协议允许客户端可以选择要求从服务器下载压缩内容,这个标准本身定义了两种压缩方法:“gzip”(内容用gzip数据流进行封装)以及“deflate”(内容是原始格式、没有数据头的DEFLATE数据流)。许多HTTP客户端库以及绝大多数当今的浏览器都支持这两种格式。
二十世纪九十年代末期以来,一个基于数据块排序算法的文件压缩工具bzip2作为gzip的替代者逐渐得到流行,它可以生成相当小的压缩文件,尤其是对于源代码以及其它的结构化文本来说更是这样,但是这样做的代价是最高达4倍内存与处理器时间消耗。bzip2压缩的tar包传统上叫作.tar.bz2。
AdvanceCOMP也有一个DEFLATE实现,它产生的gzip兼容文件比gzip本身的压缩率更高。
gzip压缩文件对应的解压程序是gunzip。