Linux gzip 命令:综合教程

2023-10-15

gzip 代表 GNU zip,是基于 Unix 的系统上用于压缩和解压缩文件的流行工具。

该工具不仅仅压缩单个文件;与其他工具(例如tar用于压缩目录。

 

 

命令结构和选项

基本结构为gzip命令如下:


gzip [option] [file...]
  

以下是一些基本选项:

 

  • -c:写入标准输出,不改变原文件。
  • -d: 解压。
  • -f:强制压缩,即使文件已经有.gz扩大。
  • -k:保留原文件(不要删除)。
  • -l:列表理解统计。
  • -r:对目录进行递归操作。
  • -v:以详细模式操作。
  • -#:设置压缩级别(从1到9,其中9最好)。

 

压缩和解压文件

要使用压缩文件gzip,只需运行:


gzip filename.txt
  

原始文件filename.txt被替换为filename.txt.gz.
解压缩文件:


gzip -d filename.txt.gz
  

The .gz文件被替换为原始未压缩的文件filename.txt.

 

了解 gzip 中使用的压缩算法

gzip使用 DEFLATE 算法。该算法结合了 LZ77 (Lempel-Ziv 1977) 和 Huffman 编码。它的工作原理:

  1. LZ77 使用对未压缩数据流中较早存在的数据的单个副本的引用来替换重复出现的数据。
  2. 然后,霍夫曼编码通过使用较短的代码对频繁出现的位序列进行编码,进一步减小了生成的数据流的大小。

 

压缩级别(从 1 到 9)

With gzip,您可以选择 1 到 9 之间的压缩级别:


gzip -# backup.txt
  

Replace #1 到 9 之间的数字。

  • 1提供最快的压缩速度,但会产生较大的压缩文件。
  • 9提供最佳压缩(最小输出)但花费最多时间。

默认情况下,不指定级别,gzip使用级别6其目的是在压缩速度和压缩文件的大小之间取得平衡。

 

使用 –fast 和 –best 调整压缩速度

虽然您可以使用指定压缩级别-1 to -9, gzip还提供了两个描述性选项来调整压缩:

  • --fast: 相当于-1,此选项提供最快的压缩。
  • --best: 相当于-9,它的目标是最高的压缩比,无论花费的时间如何。

Usage:


gzip --fast filename.txt  # For fast compression
gzip --best filename.txt  # For best compression ratio  

当您优先考虑速度或压缩比而不需要记住特定的级别编号时,这些选项非常有用。

 

将多个文件压缩在一起(使用 tar)

如果需要压缩多个文件或目录,gzip其本身并不支持这一点。

然而,结合tar,您可以将多个文件和目录压缩为一个.tar.gz file:


tar -czf archive_name.tar.gz directory_or_file
  
  • c:创建一个新的存档。
  • z:使用 gzip 压缩存档。
  • f:使用存档文件。

该命令将指定的目录或文件打包到archive_name.tar.gz.

 

分别压缩多个文件

您可以压缩多个单独的文件而不存档:


gzip file1.txt file2.txt file3.txt
  

该命令将分别压缩每个文件,从而产生file1.txt.gz, file2.txt.gz, and file3.txt.gz.

如果你想将它们压缩在一起,你可以使用gzip with tar正如我们上面所做的。

 

使用管道压缩其他命令的输出

您可以通过将其他命令的输出通过管道直接压缩gzip:


command | gzip > output.gz
  

例如,压缩输出ls -l:


ls -l | gzip > listing.gz
  

这会将当前目录中的文件压缩列表保存到listing.gz.

 

解压无需删除原件

如果您想解压缩文件而不更改或删除原始文件.gz文件,您可以使用-c选项与gzip:


gzip -dc backup.txt.gz > backup.txt
  

该命令解压backup.txt.gz到标准输出并将其重定向到backup.txt,保持原始压缩文件不变。

 

使用 gzip 进行递归操作

对于压缩目录或对目录中的多个文件进行操作,-r选项变得有用:


gzip -r directory_name/
  

该命令将递归压缩所有文件directory_name及其子目录,将其替换为它们的.gz同行。

 

保留原始文件名

要在压缩或解压缩时保留原始文件,您可以使用-k option:


gzip -k backup.txt
  

这创造了backup.txt.gz但也保留了原来的样子backup.txt。相同的选项在减压过程中起作用,确保您保留.gz版本与解压文件一起。

 

连接压缩文件

要连接压缩文件,请使用-c选项与gzip写入标准输出。

然后您可以使用以下命令将此输出重定向到文件>对于第一个文件和>>用于后续文件。执行此操作的方法如下:


gzip -c file1 > backup.gz
gzip -c file2 >> backup.gz  

这将创建一个名为的串联 gzip 文件backup.gz。解压后,它将输出以下内容的组合file1 and file2按顺序。

注意backup.gz仍然是单个 gzip 流。因此,您无法提取file1 or file2单独从中。

 

查看压缩文件

有一些工具可以让您查看压缩文件的内容而不解压它们:

  1. zcat filename.txt.gz:这会在终端中显示压缩文件的内容。
  2. zless filename.txt.gz:这使您可以上下滚动查看压缩文件。
  3. zmore filename.txt.gz:它提供了一种简单的方式来浏览压缩文件,类似于标准more命令。

这些实用程序可以方便地快速检查压缩文件,而无需先解压缩它们。

阅读更多有关如何使用的信息zcat、zless 和 zmore.

 

检查压缩文件的完整性

要验证压缩文件的完整性而不解压缩它,请使用-t option:


gzip -t backup.txt.gz
  

如果文件完好无损,该命令不会返回任何输出。但是,如果文件有问题,gzip将通过错误消息通知您。

 

分析压缩统计数据

如果您对压缩细节感到好奇,-l选项列出统计信息:


gzip -l backup.txt.gz
  

Output:


         compressed        uncompressed  ratio uncompressed_name
          291473268           301343120   3.3% backup.txt
  

这将显示列,包括:

  • compressed size:压缩文件的大小。
  • uncompressed size:原始文件压缩前的大小。
  • ratio:达到压缩比。
  • uncompressed_name:原始未压缩文件的名称。

该信息对于评估压缩的有效性至关重要。

 

了解 -v(详细)选项

当使用-v or --verbose选项与gzip,该命令提供有关其操作的详细输出:


gzip -v backup.txt
  

Output:


backup.txt:   3.3% -- replaced with backup.txt.gz
  

Here, 3.3%表示达到的压缩比。当您想要观察压缩性能而不使用-l option.

 

不同级别压缩所需的时间

使用以下命令测量不同级别压缩文件所需的时间gzip,您可以使用time命令。
以下是每个级别的操作方法:


# Measure time for compression level 1
time gzip -1 -k backup.txt
  

Output:


real	0m11.463s
user	0m11.172s
sys	0m0.288s
  

要测量压缩级别 9 的时间:


time gzip -9 -k backup.txt
  

Output:


real	0m13.803s
user	0m13.465s
sys	0m0.321s  

The time命令将显示压缩过程中实际经过的时间。用于测试的文件大小为 300 MB。

如您所见,级别 9 的压缩需要更多时间。

 

使用 –rsyncable 选项

The --rsyncable选项使压缩文件更适合使用同步rsync:


gzip --rsyncable backup.txt
  

压缩会被稍微修改,因此未压缩文件中的微小变化会导致压缩版本中的微小变化。

这可以使后续的同步操作使用rsync速度更快,因为如果仅对源文件进行较小的修改,则需要传输的数据更少。

 

资源

https://www.gnu.org/software/gzip/manual/gzip.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux gzip 命令:综合教程 的相关文章

随机推荐

  • Pythonic 壁纸包

    通过以下方式表达您对 Python 的热爱 The Pythonic Wallpapers Pack 原价 9 99 美元 今日仅需 4 99 美元 使用这些为您的计算机 手机或平板电脑定制的独特壁纸 向世界展示您是 Python 达人 你
  • 理解 Python print() 函数:超越 Hello World

    您可能想知道 为什么要写一个关于简单打印功能的完整教程 但不要被欺骗 谦卑者print 函数虽然使用简单 但却是 Python 工具库中不可或缺的工具 本教程将引导您了解使用print 函数 探索其语法和参数 然后深入研究更高级的主题 您将
  • 在 Python 中删除字符串中标点符号的 5 种方法

    Python 提供了多种删除标点符号的方法 这里的目标是将字符串中的每个标点字符替换为空字符串 让我们为所有示例考虑以下原始字符串 original string Hello World Let s test some punctuatio
  • PyQt5 教程 – Python GUI 编程示例

    PyQt5 是用 Python 构建 GUI 应用程序时最常用的模块之一 这是因为它的简单性 正如您将看到的那样 鼓励开发人员使用 PyQt5 的另一个重要功能是 PyQt5 设计器 它使得在短时间内开发复杂的 GUI 应用程序变得非常容易
  • Python GUI 示例(Tkinter 教程)

    在本教程中 我们将通过使用 Tkinter 包编写一些 Python GUI 示例来学习如何开发图形用户界面 Tkinter 包作为标准包随 Python 一起提供 因此我们不需要安装任何东西即可使用它 Tkinter 包是一个非常强大的包
  • Python 中的凯撒密码(文本加密教程)

    密码学涉及将一条信息 以纯文本形式 加密或编码为一种看起来乱码且在普通语言中毫无意义的形式 此编码消息 也称为密文然后 目标接收者可以使用传达给最终用户的解码技术 通常与私钥一起 将其解码回纯文本 凯撒密码是我们将在本教程中重点介绍的最古老
  • 安装和使用非 Composer Laravel 包

    如果你想在 Laravel 中使用包 你只需在 Composer json 文件中添加一行即可完成工作 这是因为该包在 packagist org 中可用 如果您要使用的包是非 Composer Laravel 包怎么办 可能在 git 存
  • 文本处理中 Awk 命令的 30 个示例

    在上一篇文章中 我们谈到了sed命令我们看到了许多在文本处理中使用它的例子 我们看到了它在这方面的优点 但它有一些局限性 有时您需要一些强大的功能 让您能够更好地控制数据处理 这是哪里awk 命令进来 awk 命令或具体的 GNU awk
  • 安装、保护、访问和配置 Linux 邮件服务器 (Postfix)

    如果您想发送或接收电子邮件 您应该有一个邮件服务器 在这篇文章中 我们将讨论 Linux 邮件服务器以及 SMTP 简单邮件传输协议 以及其他邮件相关协议 例如邮局协议 POP 和互联网消息访问协议 IMAP 的工作原理以及它们之间的关系他
  • 了解和使用 Linux Subshel​​l(实用指南)

    子shell是由shell启动的子进程 shell本质上是一个命令行解释器 它共享父 shell 的属性 但在单独的进程空间中运行 子 shell 为执行命令和运行脚本提供了隔离性和灵活性 子 shell 通常用于任务自动化 并行执行和模块
  • 加速您的 Python 代码:Numba 实用指南

    Numba 是一个开源 JIT 编译器 可以翻译以下代码的子集Python and NumPy代码转换为快速机器代码 它通过使用行业标准的 LLVM 编译器库并优化执行速度来加速数值计算 在本教程中 我们将探索如何使用 Numba 使 Py
  • Linux 正则表达式教程(Sed 和 AWK)示例

    为了成功地与Linux sed编辑和awk 命令在 shell 脚本中 您必须了解正则表达式或简称正则表达式 由于正则表达式有很多引擎 我们将使用 shell 正则表达式并了解 bash 在使用正则表达式方面的强大功能 首先 我们需要了解什
  • 10 多个在 Linux 中终止进程的示例

    在本教程中 我们将通过多个示例讨论如何终止 Linux 中的进程 在大多数情况下 就像输入 kill 命令然后输入进程 ID 通常缩写为 PID 一样简单 正如你所看到的 我们杀死了一个ID为1813的进程 如果您是 Windows 用户
  • 如何安装和配置 Squid Linux 代理服务器

    Linux代理服务器或代理服务器通常是保存访问过的网页以供以后请求的服务器 因此如果您尝试访问同一个网页或其他任何人 您将从代理服务器获取页面 这非常有用 它使网上冲浪速度更快并减少流量 这意味着成本更低 缓存服务器可以将外部流量减少至 4
  • 使用 Sed 命令进行文本替换的实际示例

    在本教程中 您将深入研究如何使用实际示例sed命令可用于文本替换 在本教程结束时 您将对以下方面有更深入的了解sed及其在文本替换中的实际应用 目录 hide 1 将 URL 中的 HTTP 更改为 HTTPS 2 用下划线替换空格 3 更
  • 数据帧过滤:在 Pandas 查询中使用正则表达式

    The 查询 方法Pandas 中允许您根据查询表达式过滤 DataFrame 行 将正则表达式 regex 的强大功能与query 方法允许更高级和灵活的查询 本教程将指导您完成使用正则表达式的过程query 熊猫中的方法 目录 hide
  • 使用 to_xml 将 Pandas DataFrame 转换为 XML 文件

    The to xml方法允许您将 DataFrame 转换为 XML 格式 在本教程中 我们将逐步完成导出Pandas使用 DataFrame 到 XML 文件to xml method 目录 hide 1 Pandas to xml 语法
  • 使用 to_csv 将 Python Pandas DataFrame 导出到 CSV 文件

    The to csv函数允许您从a写入数据PandasDataFrame 到 CSV 文件 当您需要保存 共享或导出数据以便在不同的环境或应用程序中进一步使用或分析时 这非常有用 它带有多个参数 可帮助您根据需要自定义流程 例如 您可以选择
  • 使用 Linux-PAM 增强 Linux 身份验证

    在上一篇文章中 我们讨论了Linux iptables 防火墙 还有人问认证问题 今天我们来聊聊Linux中用于身份验证的强大框架 那就是Linux PAM PAM or 可插拔的身份验证模块是位于 Linux 应用程序和 Linux 本机
  • Linux gzip 命令:综合教程

    gzip 代表 GNU zip 是基于 Unix 的系统上用于压缩和解压缩文件的流行工具 该工具不仅仅压缩单个文件 与其他工具 例如tar用于压缩目录 目录 hide 1 命令结构和选项 2 压缩和解压文件 3 了解 gzip 中使用的压缩