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
相关推荐
Yana.nice1 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月1 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊2 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey2 小时前
【Linux】线程同步与互斥
linux·笔记
舰长1152 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng2 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.2 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon3 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq3 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan3 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc