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。
相关推荐
ShineWinsu34 分钟前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
Zenova EdgeOS38 分钟前
Linux IO 监测:iotop 工业边缘排障实战
linux·边缘计算·工业网关·iotop·排障
Fcy64844 分钟前
Linux下 传输层协议UDP详解(含底层源码解析)
linux·运维·udp
青梅味猪大肠1 小时前
【操作系统-24】双标志先检查
linux·运维·服务器
xiaoye-duck1 小时前
《Linux 网络编程》深入理解五种 IO 模型:从 IO 本质到非阻塞 IO 实战
linux·网络
程序员-Benothing1 小时前
Linux内核与模块管理:uname、lsmod、modprobe、sysct
linux·运维·数据库
嵌入式小能手1 小时前
飞凌嵌入式ElfBoard-Shell编程应用实例-使用WiFi拨号上网
linux·服务器·网络
..Dauntless..1 小时前
【Linux】环境变量
linux·运维·服务器
FED_AF2 小时前
Linux运维“邪修”功法之正则表达式
linux·运维·正则表达式
xiaoye-duck2 小时前
《Linux 网络编程·加餐》详解 listen 的 backlog 与 TCP 全连接队列
linux·tcp