Linux命令:gzip

gzip 是 Linux 系统中用于压缩单个文件 的经典命令,采用 DEFLATE 压缩算法,压缩后的文件默认后缀为 .gz。它的特点是轻量、高效,常用于日志文件、文本文件的压缩归档。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

一、核心特点

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

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

五、扩展命令

  • gunzip:等价于 gzip -d,专门用于解压 .gz 文件。
  • zless / zmore:分页查看 .gz 压缩文件内容,类似 less / more
相关推荐
chlk12317 小时前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑17 小时前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件18 小时前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号1 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash1 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
十日十行2 天前
Linux和window共享文件夹
linux
木心月转码ing3 天前
WSL+Cpp开发环境配置
linux
崔小汤呀4 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应4 天前
vi编辑器使用
linux·后端·操作系统