当你需要在通过网络传输文件之前减小文件大小或释放磁盘空间时,gzip 是 Linux 上的标准压缩工具。
gzip 使用 Deflate 算法,并将压缩文件保存为 .gz 扩展名。默认情况下,它会用压缩版本替换原始文件,并保持文件的时间戳、权限模式和所有权不变。
gzip 只能压缩单个文件。如果你想将多个文件或一个目录压缩成一个归档文件,需要先创建一个 Tar 归档,然后使用 gzip 压缩该 .tar 文件。以 .tar.gz 或 .tgz 结尾的文件是使用 gzip 压缩的 Tar 归档。
gzip 最适合用于文本文件、Tar 归档和类似的数据。避免将其用于图像、音频、PDF 和其他已经压缩过的二进制格式;大小缩减效果将微乎其微。
本指南通过实际示例介绍最常见的 gzip 选项。
gzip 命令语法
gzip 命令的一般语法如下:
gzip [OPTION]... [FILE]...gzip 只压缩常规文件,并为每个输入文件创建一个压缩文件。按照惯例,压缩文件以 .gz 或 .z 结尾。符号链接会被忽略。
使用 gzip 压缩文件
要压缩单个文件,请调用 gzip 命令并在其后跟上文件名:
gzip filenamegzip 将创建一个文件 filename.gz 并删除原始文件。
默认情况下,gzip 会在压缩文件中保留原始文件的时间戳、权限模式、所有权和名称。
保留原始文件
如果你想保留输入(原始)文件,请使用 -k 选项:
gzip -k filename保留原始文件的另一种方法是使用 -c 选项,它告诉 gzip 写入标准输出,并将输出重定向到文件:
gzip -c filename > filename.gz此方法在脚本中很有用,因为它永远不会删除原始文件。
详细输出
如果你想查看压缩百分比和正在处理的文件名,请使用 -v 选项:
gzip -v filenamefilename: 7.5% -- replaced with filename.gz压缩多个文件
你也可以将多个文件作为参数传递给命令。例如,要压缩名为 file1、file2、file3 的文件,你可以运行以下命令:
gzip file1 file2 file3上述命令将创建三个压缩文件:file1.gz、file2.gz、file3.gz。
压缩目录中的所有文件
要压缩给定目录中的所有文件,请使用 -r 选项:
gzip -r directorygzip 将递归遍历整个目录结构,并压缩该目录及其子目录中的所有文件。
更改压缩级别
gzip 允许你指定从 1 到 9 的压缩级别范围。-1 或 --fast 表示最快的压缩速度和最小的压缩比,-9 或 --best 表示最慢的压缩速度和最大的压缩比。默认压缩级别为 -6。
例如,要获得最大压缩,你可以运行:
gzip -9 filename压缩是一项 CPU 密集型任务;压缩级别越高,过程耗时越长。
使用标准输入
要从标准输入创建 .gz 文件,请将命令的输出通过管道传递给 gzip。例如,要创建一个 Gzip 压缩的 MySQL 数据库备份,你可以运行:
mysqldump database_name | gzip -c > database_name.sql.gzmysqldump 命令的输出将作为 gzip 的输入。
使用 gzip 解压文件
要解压 .gz 文件,请使用 -d 选项:
gzip -d filename.gz另一个可以用来解压 Gzip 文件的命令是 gunzip。它的工作方式与 gzip -d 相同:
gunzip filename.gz你可能会发现 gunzip 比 gzip -d 更容易记住。
保留压缩文件
与压缩文件时一样,-k 选项告诉 gzip 保留输入文件,在这种情况下,即压缩文件:
gzip -dk filename.gz解压多个文件
要一次解压多个文件,请将文件名作为参数传递给 gzip 命令:
gzip -d file1.gz file2.gz file3.gz解压目录中的所有文件
当与 -d 和 -r 选项一起使用时,gzip 会递归解压给定目录中的所有文件:
gzip -dr directory列出压缩文件信息
当与 -l 选项一起使用时,gzip 命令会显示给定压缩文件的统计信息:
gzip -l filename输出将包括未压缩的文件名、压缩和未压缩大小以及压缩比:
compressed uncompressed ratio uncompressed_name
130 107 7.5% filename要获取更多信息,请添加 -v 选项:
gzip -lv filenamemethod crc date time compressed uncompressed ratio uncompressed_name
defla a9b9e776 Sep 3 21:20 130 107 7.5% filename测试压缩文件
要在不提取的情况下验证 .gz 文件,请使用 -t 选项:
gzip -t filename.gz查看压缩文件的内容
要在不解压的情况下查看 .gz 文件的内容,请使用 zcat:
zcat filename.gzzcat 将解压后的输出写入标准输出,因此你可以将其通过管道传递给其他命令。例如,要在压缩的日志文件中搜索某个模式:
zcat access.log.gz | grep 'ERROR'快速参考
如需可打印的快速参考,请参阅 gzip 速查表。
| 命令 | 描述 |
|---|---|
gzip filename | 压缩文件(替换原始文件) |
gzip -k filename | 压缩并保留原始文件 |
gzip -d filename.gz | 解压文件 |
gunzip filename.gz | 解压文件(gzip -d 的别名) |
gzip -r directory | 递归压缩目录中的所有文件 |
gzip -9 filename | 最大压缩 |
gzip -1 filename | 最快压缩 |
gzip -l filename.gz | 显示压缩统计信息 |
gzip -t filename.gz | 测试压缩文件的完整性 |
zcat filename.gz | 在不提取的情况下查看压缩文件内容 |