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 命令的关系。