开源数据压缩工具-gzip


Gzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的gzip代表GNU zip。也经常用来表示gzip这种文件格式。软件的作者是Jean-loup Gailly和Mark Adler。
gzip的算法基础是DEFLATE。
gzip produces files with a .gz extension. gunzip can decompress files created by gzip, compress or pack. The detection of the input format is automatic.
文件格式说明
10字节的头,包含幻数、版本号以及时间戳
可选的扩展头,如原文件名
文件体,包括DEFLATE压缩的数据
8字节的尾注,包括CRC-32校验和以及未压缩的原始数据长度
尽管这种文件格式允许多个这样的数据拼接在一起,在解压时也把它们当作拼接在一起的数据,但是通常gzip仅仅用来压缩单个文件。多个文件的压缩归档通常是首先将这些文件合并成一个tar文件,然后使用gzip进行压缩,最后生成的.tar.gz或者.tgz文件,这就是所谓的“tar压缩包”或者“tarball”。
注意不要将gzip和zip压缩格式混淆。ZIP也使用DEFLATE算法,而且可移植性更好,并且不需要一个外部的归档工具就可以包容多个文件。但是,由于zip对每个文件进行单独压缩而没有利用文件间的冗余信息(固实压缩),所以ZIP的压缩率要稍逊于tar压缩包。
对应的解压程序是gunzip。
在HTTP/1.1协议中允许客户端可以选择要求从服务器下载压缩内容,这个标准本身定义了三种压缩方法:“gzip”(内容用gzip数据流进行封装)、“compress”(内容用compress数据流进行封装)以及“deflate”(内容是原始格式、没有数据头的DEFLATE数据流)。当然前者是目前的主流,很多站点都开启了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
不常见用法
gzip怎么将压缩或解压缩文件到处理其他目录
解决方法:gzip test.txt -c > /freeoa/test.gz,将文件流重定向,解压也是:gunzip /freeoa/test.gz -c > ./test.txt 或 gzip -d /freeoa/test.gz -c > ./test.txt
gzip的man手册中关于此压缩相关的节选
-c --stdout --to-stdout
Write output on standard output; keep original files unchanged.If there are several input files, the output consists of a sequence of independently compressed members. To obtain better compression, concatenate all input files before compressing them.
-d --decompress --uncompress
Decompress.
从标准输入接收文件流再进行压缩输出
cat comorig2.txt |gzip -9 >com3.gz
cat comorig2.txt |gzip -9 -c >com4.gz
基于gz并行压缩-pigz
A parallel implementation of gzip for modern multi-processor, multi-core machines.
最新版本:1.6
添加 "--keep" (-k) 参数用于不删除输入文件
修复了 pack 格式的解压问题
使用优化编译后的错误覆盖问题修复
zgrep 的处理多数字上下文参数的问题修复
zmore 行为更像 more
最新版本:1.11
gzip 的上一个版本是 2018 发布的 1.10,时隔两年半后的2021年9月上旬,它终于迎来了更新——Gzip 1.11。不过在这两年多的时间里,Gzip 似乎也没带来令人眼前一亮的变化,主要是针对 IBM Z 设备的优化。gzip 1.11 的主要变化是合并了由 IBM 贡献的补丁——为 Gzip 提供对 IBM Z 的良好支持。Gzip 1.11 具有用于压缩和解压缩的 IBM Z 硬件加速 DEFLATE 实现。IBM 表示“压缩和解压缩性能比当前的 gzip 快几个数量级,比率与级别 1 相当”。除了针对 IBM Z 的优化,自 v1.10 以来的变化包括构建升级、文档升级、改进测试覆盖率和其他维护工作。更多详情查看发行公告。
官方主页:http://www.gzip.org/
项目主页:http://www.gnu.org/software/gzip/
gzip的算法基础是DEFLATE。
gzip produces files with a .gz extension. gunzip can decompress files created by gzip, compress or pack. The detection of the input format is automatic.
文件格式说明
10字节的头,包含幻数、版本号以及时间戳
可选的扩展头,如原文件名
文件体,包括DEFLATE压缩的数据
8字节的尾注,包括CRC-32校验和以及未压缩的原始数据长度
尽管这种文件格式允许多个这样的数据拼接在一起,在解压时也把它们当作拼接在一起的数据,但是通常gzip仅仅用来压缩单个文件。多个文件的压缩归档通常是首先将这些文件合并成一个tar文件,然后使用gzip进行压缩,最后生成的.tar.gz或者.tgz文件,这就是所谓的“tar压缩包”或者“tarball”。
注意不要将gzip和zip压缩格式混淆。ZIP也使用DEFLATE算法,而且可移植性更好,并且不需要一个外部的归档工具就可以包容多个文件。但是,由于zip对每个文件进行单独压缩而没有利用文件间的冗余信息(固实压缩),所以ZIP的压缩率要稍逊于tar压缩包。
对应的解压程序是gunzip。
在HTTP/1.1协议中允许客户端可以选择要求从服务器下载压缩内容,这个标准本身定义了三种压缩方法:“gzip”(内容用gzip数据流进行封装)、“compress”(内容用compress数据流进行封装)以及“deflate”(内容是原始格式、没有数据头的DEFLATE数据流)。当然前者是目前的主流,很多站点都开启了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
不常见用法
gzip怎么将压缩或解压缩文件到处理其他目录
解决方法:gzip test.txt -c > /freeoa/test.gz,将文件流重定向,解压也是:gunzip /freeoa/test.gz -c > ./test.txt 或 gzip -d /freeoa/test.gz -c > ./test.txt
gzip的man手册中关于此压缩相关的节选
-c --stdout --to-stdout
Write output on standard output; keep original files unchanged.If there are several input files, the output consists of a sequence of independently compressed members. To obtain better compression, concatenate all input files before compressing them.
-d --decompress --uncompress
Decompress.
从标准输入接收文件流再进行压缩输出
cat comorig2.txt |gzip -9 >com3.gz
cat comorig2.txt |gzip -9 -c >com4.gz
基于gz并行压缩-pigz
A parallel implementation of gzip for modern multi-processor, multi-core machines.
最新版本:1.6
添加 "--keep" (-k) 参数用于不删除输入文件
修复了 pack 格式的解压问题
使用优化编译后的错误覆盖问题修复
zgrep 的处理多数字上下文参数的问题修复
zmore 行为更像 more
最新版本:1.11
gzip 的上一个版本是 2018 发布的 1.10,时隔两年半后的2021年9月上旬,它终于迎来了更新——Gzip 1.11。不过在这两年多的时间里,Gzip 似乎也没带来令人眼前一亮的变化,主要是针对 IBM Z 设备的优化。gzip 1.11 的主要变化是合并了由 IBM 贡献的补丁——为 Gzip 提供对 IBM Z 的良好支持。Gzip 1.11 具有用于压缩和解压缩的 IBM Z 硬件加速 DEFLATE 实现。IBM 表示“压缩和解压缩性能比当前的 gzip 快几个数量级,比率与级别 1 相当”。除了针对 IBM Z 的优化,自 v1.10 以来的变化包括构建升级、文档升级、改进测试覆盖率和其他维护工作。更多详情查看发行公告。
官方主页:http://www.gzip.org/
项目主页:http://www.gnu.org/software/gzip/