Linux 基础教程

Linux 参考手册

Linux 笔记

gzip 压缩解压命令使用及原理

Linux 命令行大全手册详解 Linux 命令行大全手册详解


gzip 命令用于压缩或解压缩一个或更多文件,文件经它压缩过后,其名称后面会多处“.gz”扩展名,gzip 也经常用来表示 gzip 这种文件格式。默认情况下,执行命令后,原文件会被其压缩文件取代。与之相反,gunzip 命令则将压缩文件还原为原文件。gzip 不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和 tar 命令一起构成 Linux 操作系统中比较流行的压缩文件格式。据统计,gzip 命令对文本文件有 60 %~70 %的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

gzip 示例

压缩文件示例:

demo@Linux ~ $ ls -ltrh
-rw-r--r--    1 demo  demo    11K  4 11 15:33 demo.txt
demo@Linux ~ $
demo@Linux ~ $ gzip demo.txt
demo@Linux ~ $
demo@Linux ~ $ ls -ltrh
-rw-r--r--    1 demo  demo    4.2K  4 11 15:33 demo.txt.gz

我们针对 demo.txt 文件进行压缩,命令执行后,demo.txt.gz 文件取代了原文件,大小变为差不多原来的 1/3;此外,我们还可以看出,压缩后的文件与原文件有着相同的权限和时间戳

接着,我们运用 gunzip 命令进行解压缩,如此该压缩文件又被原始文件取代,而且权限和时间戳仍然保持一致,示例如下:

demo@Linux ~ $ gunzip demo.txt
demo@Linux ~ $
demo@Linux ~ $ ls -ltrh
-rw-r--r--    1 demo  demo    11K  4 11 15:33 demo.txt

解压缩也可以用 gzip 命令上加 -d 选项,等同于 gunzip 命令。

gzip 命令

OpenBSD 中所包含的 gzip 版本实际上是 compress 程序,其对 gzip 文件的支持在 OpenBSD 3.4 中被添加,此处的 g 代表免费(gratis)。

语法

gzip [选项] [-S 后缀] 文件1/目录1 [文件2/目录2 [...]]
gunzip [选项] [-S 后缀] 文件1/目录1 [文件2/目录2 [...]]

选项

-c, --stout, --to-stout
将输出内容写到标准输出端口,并且保持原有文件。
-d, --decompress, --uncompress
解压缩。加上此选项,gzip 命令便类似于 gunzip。
-k, --keep
压缩或者解压缩过程中,保留原文件。
-r, --recursive
如果该命令行的操作参数中有一个或是多个是目录,那么递归压缩包含在目录中的文件。
-v, --verbose
在压缩时显示详细信息(每个文件的压缩率信息等)。
-1, --fast
-2, -3, -4, -5, -6, -7, -8
-9, --best
设定压缩级别。级别从 1(速度最快,压缩比最小)到 9(速度最慢,压缩比最大)范围中的一个整数。此外 1 也可用 --fast 选项,9 可以用 --best 描述。gzip 默认的压缩级别是 6。

除了上述描述的常用选项外,还有如下选项:

-f, --force
强制压缩。不理会文件名称或硬连接是否存在以及该文件是否为软连接。
-h, --help
显示在线帮助信息。
-L, --license
显示版权信息。
-l, --list
列出所有压缩文件的压缩统计(如,解压后的名字、压缩率等)。
-N, --name
压缩文件时,保存为原来的文件名称。
-n, --no-name
压缩文件时,不保存原来的文件名称及时间戳。
-q, --quiet
安静模式,即不显示警告(warnings)及错误(errors)信息。
-S suffix, --suffix suffix
更改压缩文件扩展名的后缀,默认是 .gz,注意 suffix 包含点。
-t, --test
检验压缩文件的完整性。
-V, --version
显示版本信息。

gzip 常用实例

下面列出了 gzip 常用的几种实例。

一条命令压缩多个文件

demo@Linux ~ $ gzip demo.txt sample.txt
demo@Linux ~ $
demo@Linux ~ $ ls -ltrh
-rw-r--r--    1 demo  demo   4.2K  4 11 15:33 demo.txt.gz
-rw-r--r--    1 demo  demo    10K  4 11 15:33 sample.txt.gz

压缩保留原始文件

只需要加 -k 选项即可。

demo@Linux ~ $ gzip -k demo.txt
demo@Linux ~ $
demo@Linux ~ $ ls -ltrh
-rw-r--r--    1 demo  demo   4.2K  4 11 15:33 demo.txt.gz
-rw-r--r--    1 demo  demo    11K  4 11 15:33 demo.txt

压缩采用最大的压缩比,并且显示压缩率

最大的压缩比,需要选项 -9 或 -- best,显示压缩信息加选项 -v。

demo@Linux ~ $ gzip -9v demo.txt 
demo.txt:	   31.8% -- replaced with demo.txt.gz

扩展

针对 gzip 压缩后的文件内容的查看,我们可以用 zcat 命令,它的功能与 cat 命令相同,只是它的操作对象是压缩文件。用 zcat 命令处理 gzip 压缩文件的示例如下:

demo@Linux ~ $ zcat demo.txt.gz | less

同样也有 zless 命令,类似于 zcat 与 cat 命令的关系。