Linux gzip 命令详解:从基础到高级用法

Linux gzip 命令详解:从基础到高级用法

在 Linux 系统中,文件压缩与解压缩是日常运维和文件管理的常见操作。gzip(GNU Zip)作为一款经典的压缩工具,凭借其高效的压缩算法和简洁的使用方式,成为 Linux 用户处理文件压缩的首选工具之一。本文将从命令基础、语法结构、常用选项、实战案例到注意事项,全面讲解gzip命令的使用方法,帮助新手快速上手,也为资深用户提供参考。

一、gzip 命令基础介绍

gzip是 Linux 系统中用于压缩文件的工具,其核心功能是将单个文件压缩为.gz格式的压缩文件,同时默认删除原始文件(可通过选项保留)。它采用 DEFLATE 压缩算法(结合 LZ77 和哈夫曼编码),压缩率较高,且压缩速度较快,适用于文本文件、日志文件、源代码文件等多种类型文件的压缩。

核心特点:

  1. 单文件压缩gzip仅支持对单个文件进行压缩,不支持直接压缩目录(需结合tar命令实现目录压缩);

  2. 默认删除原文件:压缩后默认删除原始文件,需通过选项显式保留;

  3. 压缩后格式:压缩后的文件扩展名为.gz,例如file.txt压缩后为file.txt.gz

  4. 解压缩功能gzip自带解压缩功能(无需额外工具),通过选项即可实现.gz文件的解压缩。

二、gzip 命令语法结构

gzip命令的语法格式简洁,主要包含选项目标文件 / 目录两部分,具体如下:

gzip \[选项] \[文件/目录]

说明:

  • 选项:控制gzip的压缩 / 解压缩行为,如压缩级别、是否保留原文件、显示压缩信息等;

  • 文件 / 目录:指定需要压缩或解压缩的目标。若为目录,gzip会递归压缩目录下的所有文件(但不会压缩目录本身,仅处理目录内文件)。

三、gzip 常用选项详解

gzip的选项较多,以下整理了日常使用中最常用的选项,按功能分类说明:

1. 基础压缩 / 解压缩选项

选项英文全称功能说明
-d--decompress解压缩.gz格式文件(等同于gunzip命令)
-c--stdout将压缩 / 解压缩结果输出到标准输出(不修改原文件,需通过重定向保存)
-k--keep压缩 / 解压缩后保留原始文件(默认删除原文件,此选项非常实用)
-r--recursive递归处理目录下的所有文件(仅压缩目录内文件,不压缩目录)

2. 压缩级别控制选项

gzip支持 1-9 共 9 个压缩级别,级别越高,压缩率越高,但压缩速度越慢;级别越低,压缩速度越快,但压缩率越低。默认压缩级别为 6(平衡压缩率和速度)。

选项压缩级别特点适用场景
-1-fast1 级压缩速度最快,压缩率最低追求速度,对压缩率要求不高的场景(如临时文件压缩)
-6(默认)6 级速度与压缩率平衡大多数日常压缩场景
-9-best9 级压缩率最高,速度最慢追求高压缩率,不介意耗时的场景(如归档备份文件)

3. 信息显示选项

选项英文全称功能说明
-l--list显示.gz压缩文件的详细信息(包括原文件大小、压缩后大小、压缩率、文件名等)
-v--verbose显示压缩 / 解压缩的详细过程(如文件名、压缩率等)

四、gzip 实战案例

理论结合实践才能更好地掌握命令用法,以下通过 10 个常见场景的案例,帮助你快速上手gzip

案例 1:基础压缩(默认选项)

压缩单个文件test.txt,默认删除原文件,生成test.txt.gz

gzip test.txt

执行后,当前目录下仅保留test.txt.gztest.txt被删除。

案例 2:压缩并保留原文件

压缩test.txt,同时保留原始文件(通过-k选项):

gzip -k test.txt

执行后,当前目录下同时存在test.txttest.txt.gz

案例 3:指定压缩级别

以最高压缩级别(9 级)压缩log.txt,并显示压缩过程(-v):

gzip -9v log.txt

输出示例:

log.txt:    50.0% -- replaced with log.txt.gz

(表示log.txt压缩率为 50%,生成log.txt.gz并删除原文件)

案例 4:解压缩.gz 文件

解压缩test.txt.gz,默认删除压缩文件,恢复为test.txt

gzip -d test.txt.gz

或使用等效命令gunzip

gunzip test.txt.gz

案例 5:解压缩并保留压缩文件

解压缩test.txt.gz,同时保留压缩文件(-k):

gzip -dk test.txt.gz

执行后,当前目录下同时存在test.txttest.txt.gz

案例 6:递归压缩目录内文件

压缩data目录下的所有文件(包括子目录内的文件),并保留原文件:

gzip -rk data/

执行后,data目录及其子目录下的每个文件都会生成对应的.gz压缩文件,原文件保留。

案例 7:查看压缩文件信息

查看test.txt.gz的详细压缩信息(如原文件大小、压缩后大小):

gzip -l test.txt.gz

输出示例:

         compressed        uncompressed  ratio uncompressed\_name                102                204  50.0% test.txt

(含义:压缩后大小 102 字节,原文件大小 204 字节,压缩率 50%,原文件名为test.txt

案例 8:压缩结果输出到指定文件

test.txt压缩后的结果输出到backup/test.gz(不修改原文件,通过-c和重定向):

gzip -c test.txt > backup/test.gz

执行后,test.txt保留,backup/test.gz为压缩后的文件。

案例 9:批量压缩多个文件

一次性压缩当前目录下所有.log后缀的文件,并保留原文件:

gzip -k \*.log

执行后,每个.log文件都会生成对应的.log.gz文件,原.log文件保留。

案例 10:结合 tar 压缩目录

gzip不支持直接压缩目录,需结合tar先打包目录,再用gzip压缩(即tar.gz格式):

\# 方法1:分步执行(先打包,再压缩)tar -cf data.tar data/  # 将data目录打包为data.targzip -k data.tar        # 压缩data.tar为data.tar.gz,保留原tar包\# 方法2:一步执行(tar直接调用gzip压缩)tar -zcf data.tar.gz data/  # 打包并压缩data目录为data.tar.gz

五、注意事项与常见问题

1. 注意事项

  • 不支持目录直接压缩gzip仅能压缩文件,压缩目录需先通过tar打包;

  • 默认删除原文件:若需保留原文件,必须添加-k选项,避免误删重要文件;

  • 压缩率与文件类型相关:文本文件(如.txt.log)压缩率较高,二进制文件(如.exe.zip)压缩率较低(甚至可能变大);

  • .gz文件无法直接修改:需先解压缩,修改后再重新压缩。

2. 常见问题

Q1:压缩后原文件不见了,如何恢复?

A:若未使用-k选项,gzip默认删除原文件。若文件未被覆盖,可通过数据恢复工具(如extundelete)尝试恢复;若已覆盖,则无法恢复。建议日常使用时添加-k选项。

Q2:如何解压缩tar.gz格式的文件?

A:tar.gztar打包 +gzip压缩的格式,解压缩需先解压缩再解包:

\# 方法1:分步执行gzip -d data.tar.gz  # 先解压缩为data.tartar -xf data.tar     # 再解包data.tar\# 方法2:一步执行tar -zxf data.tar.gz  # 直接解压缩并解包
Q3:压缩大文件时速度太慢,如何优化?

A:降低压缩级别(如使用-1),以牺牲部分压缩率换取更快的速度:

gzip -1v large\_file.txt  # 快速压缩大文件

六、gzip 相关命令对比

Linux 中还有其他压缩工具(如bzip2xz),与gzip的对比如下,方便根据需求选择:

命令压缩格式压缩率速度适用场景
gzip.gz中等较快日常文件压缩、日志压缩
bzip2.bz2较高较慢对压缩率要求较高,不介意耗时的场景
xz.xz最高最慢归档备份(如系统镜像、大型数据集)

总结:若追求速度,选gzip;若追求高压缩率,选xzbzip2为中间选择。

七、总结

gzip作为 Linux 系统中最常用的压缩工具之一,掌握其基础用法(压缩、解压缩、保留原文件)和高级技巧(结合tar压缩目录、控制压缩级别),能极大提升文件管理和运维效率。本文通过语法、选项、案例、注意事项的全面讲解,希望能帮助你熟练运用gzip命令。

如果在使用过程中遇到其他问题,欢迎在评论区交流讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95554.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis有什么优点和缺点?

优点:极致性能: 基于内存操作和高效的单线程 I/O 模型,读写速度极快。数据结构丰富: 支持多种数据结构,如 String、Hash、List、Set、ZSet、Stream、Geo 等,编程模型灵活。持久化与高可用: 提供…

NestJS 3 分钟搭好 MySQL + MongoDB,CRUD 复制粘贴直接运行

基于上一篇内容《为什么现代 Node 后端都选 NestJS TypeScript?这组合真香了》,这篇文章继续写数据库的连接。 所以今天把MySQL、MongoDB全接上,做个小实例。朋友们项目里用什么数据库可以视情况而定。 这里的功能分别为: MySQ…

用了企业微信 AI 半年,这 5 个功能让我彻底告别重复劳动

每天上班不是在整理会议纪要,就是在翻聊天记录找文件,写文档还要自己抠数据…… 这些重复劳动是不是也在消耗你的时间?作为用了企业微信 AI 功能半年的 “老用户”,我必须说:企业微信 AI 的这 5 个功能,真的…

从入门到高手,Linux就应该这样学【好书推荐】

从入门到高手,请这样学Linux 一、Linux基础与终端操作 1.1 Linux简介 Linux 是一种开源的类 Unix 操作系统,以其稳定性、安全性和高效性被广泛应用于服务器、嵌入式系统及开发环境中。掌握基本命令和操作技巧是 Linux 学习的关键。 1.2 终端基础 打开…

【数据可视化-104】安徽省2025年上半年GDP数据可视化分析:用Python和Pyecharts打造炫酷大屏

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

组件库UI自动化

一、背景 背景: 组件库全局改动场景多,组件之间耦合场景多–时常需要全场景回归组件库demo有200多个,手动全局回归耗时耗力细微偏差纯视觉无法辨别 可行性分析: 组件库功能占比 L1(视觉层):图片…

面试题:JVM与G1要点总结

一.Java内存区域 1.运行时数据区的介绍 2.站在线程的角度看Java内存区域 3.深入分析堆和栈的区别 4.方法的出入栈和栈上分配、逃逸分析及TLAB 5.虚拟机中的对象创建步骤 6.对象的内存布局 1.运行时数据区的介绍 运行时数据区的类型:程序计数器、Java虚拟机栈、本地方…

车辆安全供电系统开发原则和实践

摘要在汽车行业中,安全应用的重要性在不断提升,例如受车辆自动化发展以及机械备用系统重要性降低的影响。为应对这些趋势,安全相关的电气和 / 或电子系统(E/E 系统)的电源输入必须由供电系统来保障,这使得功…

WebSocket客户端库:websocket-fruge365

🚀 从零开始打造一个WebSocket客户端库:websocket-fruge365 📖 前言 在现代Web开发中,实时通信已经成为不可或缺的功能。无论是聊天应用、实时数据监控,还是在线协作工具,WebSocket都扮演着重要角色。然而…

rocketmq批量执行跑批任务报错

rocketmq批量执行跑批任务,报下面的错误,怎么处理一下呢?是修改配置还是修改代码还是? org.apache.rocketmq.client.exception.MQBrokerException: CODE: 215 DESC: [FLOW]client has exhausted the send quota for the current …

大语言模型(LLM)简介与应用分享

1. 什么是大语言模型(LLM) 大语言模型(Large Language Model,简称 LLM)是基于 深度学习 和 海量文本数据 训练而成的人工智能模型。 采用 Transformer 架构参数规模巨大(数十亿到数千亿)能够 理…

【算法笔记】选择排序、插入排序、冒泡排序、二分查找问题

算法的笔记,直接上代码,思路和问题这些,都在代码注释上面 1、工具类 为了生成测试代码和比较器,专门写了一个数组工具类,代码如下: /*** 数组工具类*/ public class ArrUtil {/*** 生成随机数组* 长度是[0,…

行业分享丨基于SimSolid的大型汽车连续冲压模具刚度分析

*本文投稿自机械零部件制造业用户 汽车连续模具的刚度直接决定了冲压件质量(尺寸精度、表面缺陷)与模具寿命。传统有限元分析(FEA)在面对大型复杂模具装配体时,存在网格划分困难、计算资源消耗大、周期长等瓶颈。本文以…

用AI生成的html页面设计放到到Axure上实现再改造的方法

要将 AI 生成的 HTML 原型导入 Axure,该方法的核心逻辑是以 Figma 为 “中间桥梁”(因 Axure 无法直接读取 HTML,需通过 Figma 转换格式),分 3 步即可完成,以下是详细操作指南(含每步目标、具体…

从入门到实战:Linux sed命令全攻略,文本处理效率翻倍

从入门到实战:Linux sed命令全攻略,文本处理效率翻倍 文章目录从入门到实战:Linux sed命令全攻略,文本处理效率翻倍一、认识sed:什么是流编辑器?二、吃透sed工作原理:为什么它能高效处理文本&am…

TIOBE 8月编程语言榜深度解析:Python占比突破26%,Perl成最大黑马

根据TIOBE最新发布的2025年8月编程语言排行榜,一场静默的技术变革正在上演:Python以26.14%的占比首次突破26%大关,连续12个月稳居榜首。这一数据不仅刷新了Python自身的历史纪录,更成为TIOBE指数自2001年创立以来的最高单语言占比…

从发现到恢复,看瑞数信息如何构建“抗毁重构”实战路径

在信息化社会,“韧性”“弹性”这些词汇常被用来形容系统抵御和应对风险的能力,但对于身处关键基础设施行业的运营者来说,这些概念往往过于抽象,难以直接指导实践。 相比之下,“抗毁重构”更具画面感。它不仅是一个管理…

深入理解 jemalloc:从内存分配机制到技术选型

在高性能服务(如数据库、缓存、JVM)的底层优化中,内存分配效率直接影响系统整体性能。本文将从操作系统底层的malloc机制切入,详解 jemalloc 的设计理念、开源应用场景、实战案例,技术选型分析 一、操作系统底层的内存…

websoket使用记录

1.项目使用记录1.医疗项目中渲染回收柜温湿度,需要实时更新2.回收柜安瓿回收和余液回收时,需要前端发送指令给回收柜,比如开门、关门等。还需要收到回收柜结果,比如回收的药品信息等。我项目中用的是浏览器自带的websoket&#xf…

DevOps篇之通过GitLab CI 流水线实现k8s集群中helm应用发布

一. 设计思路 构建一个 GitLab CI 流水线,并且要集成到 K8s 集群中的 Helm 应用发布流程。首先,需要了解 GitLab CI 的基本结构,比如.gitlab-ci.yml 文件的配置,包括 stages、jobs、变量设置等。然后,结合之前讨论的 H…