Linux命令:gzip

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

一、核心特点

  1. 仅压缩单个文件 :若要压缩多个文件或目录,需先配合 tar 打包成一个文件,再用 gzip 压缩(最终生成 .tar.gz 格式)。
  2. 默认删除原文件:压缩后会自动删除未压缩的源文件,可通过参数保留源文件。
  3. 解压用 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 → 最高压缩比压缩

三、常见场景

  1. 压缩单个日志文件(保留源文件)

    bash 复制代码
    gzip -k /var/log/nginx/error.log

    执行后会生成 error.log.gz,同时保留原 error.log。

  2. 解压 .gz 文件

    两种等价写法:

    bash 复制代码
    gzip -d error.log.gz
    # 或
    gunzip error.log.gz
  3. 压缩并打包目录(配合 tar)
    gzip 无法直接压缩目录,需先用 tar 打包,再压缩(简写为 tar -zcvf):

    bash 复制代码
    # 打包并压缩 /home/data 目录,生成 data.tar.gz
    tar -zcvf data.tar.gz /home/data
    # 解压该文件
    tar -zxvf data.tar.gz
  4. 查看压缩文件内容(无需解压)

    配合 zcat 命令直接读取 .gz 文件内容:

    bash 复制代码
    zcat access.log.gz | grep "404"

四、注意事项

  1. gzip 不处理目录 :直接对目录执行 gzip -r 只会压缩目录内的所有文件,不会生成单个压缩包,这一点和 zip 不同。

  2. 压缩二进制文件效果有限 :gzip 对文本文件压缩比很高(通常 30%~70%),但对已压缩的文件(如 .jpg、.zip、.mp4)几乎无效,甚至可能增大文件体积。

  3. 与 bzip2、xz 的区别

    命令 压缩算法 压缩比 速度 后缀
    gzip DEFLATE 中等 快 .gz
    bzip2 Burrows-Wheeler 较高 中等 .bz2
    xz LZMA2 最高 慢 .xz

五、扩展命令

  • gunzip:等价于 gzip -d,专门用于解压 .gz 文件。
  • zless / zmore:分页查看 .gz 压缩文件内容,类似 less / more。
相关推荐
浩浩测试一下5 小时前
Linux 底层知识点 1
linux·运维·服务器
Escalating_xu5 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
忆挽篱笙歌6 小时前
环境变量,本地变量
linux·运维·服务器
吹什么轩8 小时前
linux系统复习:僵尸进程与孤儿进程
linux·运维·php
殷忆枫9 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker
第404号工位9 小时前
手机到底有没有偷听我们?我抓包了 72 小时,抓到了真凶
linux·人工智能·架构
字节跳动开源9 小时前
ByteDance 2026 上半年 Linux 内核贡献回顾
linux·开源
小此方9 小时前
Linux网络(二十八):从NAT转换到正反向代理:图解内网通信、NAPT端口映射
linux·运维·网络
刚入门的大一新生10 小时前
Linux-进程池
linux·运维·服务器
鱼很腾apoc11 小时前
【MySQL】第4期 用户管理与 C 语言连接编程详解
linux·服务器·c语言·mysql·connector/c