gzip 是 Linux 系统中用于压缩单个文件 的经典命令,采用 DEFLATE 压缩算法,压缩后的文件默认后缀为 .gz。它的特点是轻量、高效,常用于日志文件、文本文件的压缩归档。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
一、核心特点
- 仅压缩单个文件 :若要压缩多个文件或目录,需先配合
tar打包成一个文件,再用gzip压缩(最终生成.tar.gz格式)。 - 默认删除原文件:压缩后会自动删除未压缩的源文件,可通过参数保留源文件。
- 解压用
gunzip或gzip -d:两者效果完全一致。
二、基本用法
1. 命令格式
bash
gzip [选项] [文件列表]
2. 常用选项与示例
| 选项 | 作用 | 示例 |
|---|---|---|
| 无选项 | 压缩指定文件,删除原文件,生成 文件名.gz |
gzip access.log → 生成 access.log.gz |
-c / --stdout |
输出压缩结果到标准输出,不删除原文件 | gzip -c access.log > access.log.gz |
-k / --keep |
压缩后保留原文件(推荐日常使用) | gzip -k access.log → 同时保留 access.log 和 access.log.gz |
-d / --decompress |
解压 .gz 文件,等价于 gunzip |
gzip -d access.log.gz → 解压为 access.log |
-l / --list |
查看压缩文件的详细信息(原大小、压缩比等) | gzip -l access.log.gz |
-r / --recursive |
递归压缩目录下的所有单个文件(不会打包目录) | gzip -rk /var/log → 压缩 /var/log 下所有文件并保留源文件 |
-1 ~ -9 |
压缩级别,-1 最快(压缩比最低),-9 最慢(压缩比最高),默认 -6 |
gzip -9k largefile.txt → 最高压缩比压缩 |
三、常见场景
-
压缩单个日志文件(保留源文件)
bashgzip -k /var/log/nginx/error.log执行后会生成
error.log.gz,同时保留原error.log。 -
解压
.gz文件两种等价写法:
bashgzip -d error.log.gz # 或 gunzip error.log.gz -
压缩并打包目录(配合
tar)
gzip无法直接压缩目录,需先用tar打包,再压缩(简写为tar -zcvf):bash# 打包并压缩 /home/data 目录,生成 data.tar.gz tar -zcvf data.tar.gz /home/data # 解压该文件 tar -zxvf data.tar.gz -
查看压缩文件内容(无需解压)
配合
zcat命令直接读取.gz文件内容:bashzcat access.log.gz | grep "404"
四、注意事项
-
gzip不处理目录 :直接对目录执行gzip -r只会压缩目录内的所有文件,不会生成单个压缩包,这一点和zip不同。 -
压缩二进制文件效果有限 :
gzip对文本文件压缩比很高(通常 30%~70%),但对已压缩的文件(如.jpg、.zip、.mp4)几乎无效,甚至可能增大文件体积。 -
与
bzip2、xz的区别命令 压缩算法 压缩比 速度 后缀 gzipDEFLATE 中等 快 .gzbzip2Burrows-Wheeler 较高 中等 .bz2xzLZMA2 最高 慢 .xz
五、扩展命令
gunzip:等价于gzip -d,专门用于解压.gz文件。zless/zmore:分页查看.gz压缩文件内容,类似less/more。