Gzip 命令示例

    1. 压缩单个文件
      这将压缩 file.txt 并创建 file.txt.gz,注意这将删除原始 file.txt 文件。
gzip file.txt
  • 2.一次压缩多个文件
    这将压缩命令中指定的所有文件,再次注意,这会将 file1.txt、file2.txt 和 file3.txt 指定的原始文件删除为 file1.txt.gz、file2.txt.gz 和 file3.txt.gz
gzip file1.txt file2.txt file3.txt
    1. 压缩单个文件,保留原文件
      我们可以改为保留原始文件并创建压缩副本。
gzip -c file.txt > file.txt.gz

-c 标志将 file.txt 的压缩副本输出到 stdout,然后将其发送到 file.txt.gz,从而保留原始 file.txt 文件。较新版本的 gzip 也可能有 -k 或者 -keep 可用,它们可以与“gzip -k file.txt”一起使用。

  • 4.递归压缩所有文件
    目录和所有子目录中的所有文件都可以使用 -r 标志递归压缩
[jack@onitroad test]# ls -laR
.:
drwxr-xr-x.  2 root root   24 Jan 28 18:05 example
-rw-r--r--.  1 root root    8 Jan 28 17:09 file1.txt
-rw-r--r--.  1 root root    3 Jan 28 17:54 file2.txt
-rw-r--r--.  1 root root    5 Jan 28 17:54 file3.txt
./example:
-rw-r--r--. 1 root root  5 Jan 28 18:00 example.txt
[jack@onitroad test]# gzip -r *
[jack@onitroad test]# ls -laR
.:
drwxr-xr-x.  2 root root   27 Jan 28 18:07 example
-rw-r--r--.  1 root root   38 Jan 28 17:09 file1.txt.gz
-rw-r--r--.  1 root root   33 Jan 28 17:54 file2.txt.gz
-rw-r--r--.  1 root root   35 Jan 28 17:54 file3.txt.gz
./example:
-rw-r--r--. 1 root root 37 Jan 28 18:00 example.txt.gz

在上面的例子中,我们当前的工作目录 test 目录中有 3 个 .txt 文件,还有一个包含 example.txt 的 example 子目录。在所有文件上运行带有 -r 标志的 gzip 时,所有文件都被递归压缩。
这可以通过运行“gzip -dr *”来解压缩,其中 -d 用于解压缩,-r 递归地对所有文件执行此操作。

  • 5.解压一个gzip压缩文件
    要解压缩过程并恢复压缩后的原始文件,我们可以使用 gzip 命令本身或者 gunzip,它也是 gzip 包的一部分。
gzip -d file.txt.gz

或者

gunzip file.txt.gz

这两个命令都会产生相同的结果,将 file.txt.gz 解压缩为 file.txt,删除压缩的 file.txt.gz 文件。
与示例 3 类似,可以解压缩文件并保留原始 .gz 文件,如下所示。

gunzip -c file.txt.gz > file.txt
    1. 列出压缩信息
      使用 -l 或者 --list 标志,我们可以看到有关压缩 .gz 文件的有用信息,例如文件的压缩和未压缩大小以及压缩率,这向我们展示了压缩节省了多少空间。
[jack@onitroad ~]# gzip -l linux-3.18.19.tar.gz
         compressed        uncompressed  ratio uncompressed_name
          126117045           580761600  78.3% linux-3.18.19.tar
[jack@onitroad ~]# ls -lah
-rw-r--r--.  1 root root 554M Jan 28 17:24 linux-3.18.19.tar
-rw-r--r--.  1 root root 121M Jan 28 17:25 linux-3.18.19.tar.gz
    1. 调整压缩级别
      使用 gzip 应用于文件的压缩级别可以指定为 1(较少压缩)和 9(最佳压缩)之间的值。使用选项 1 将完成得更快,但压缩节省的空间不是最佳的。使用选项 9 将需要更长的时间才能完成,但是我们将节省最多的空间。
      下面的示例比较了 -1 和 -9 之间的差异,如图所示,虽然 -1 完成得更快,但压缩量减少了约 5%(大约需要多 30mb 的空间)。
[jack@onitroad ~]# time gzip -1 linux-3.18.19.tar
real    0m13.602s
user    0m12.908s
sys     0m0.662s
[jack@onitroad ~]# gzip -l linux-3.18.19.tar.gz
         compressed        uncompressed  ratio uncompressed_name
          156001021           580761600  73.1% linux-3.18.19.tar
[jack@onitroad ~]# time gzip -9 linux-3.18.19.tar
real    0m58.129s
user    0m57.193s
sys     0m0.735s
[jack@onitroad ~]# gzip -l linux-3.18.19.tar.gz
         compressed        uncompressed  ratio uncompressed_name
          125064095           580761600  78.5% linux-3.18.19.tar

-1 也可以用标志--fast 指定,而选项-9 也可以用标志--best 指定。默认情况下,gzip 使用 -6 的压缩级别,以牺牲速度为代价稍微偏向于更高的压缩。选择1到9之间的值时,重要的是要考虑更重要的是,保存的空间量或者花费压缩的时间量,默认值-6选项提供了公平的折衷。

  • 8.压缩目录
    在 tar 命令的帮助下,我们可以创建一个整个目录的 tar 文件并将结果进行 gzip。我们可以一步执行全部操作,因为 tar 命令允许我们指定要使用的压缩方法。
tar czvf etc.tar.gz /etc/

本示例创建了整个 /etc/ 目录的压缩 etc.tar.gz 文件。 tar 标志如下,'c' 创建一个新的 tar 存档,'z' 指定我们要使用 gzip 压缩,'v' 提供详细信息,'f' 指定要创建的文件。生成的 etc.tar.gz 文件包含 /etc/ 中使用 gzip 压缩的所有文件。

    1. 完整性测试
      -t 或者 --test 标志可用于检查压缩文件的完整性。
      在普通文件上,结果将列为 OK,如下所示。
[jack@onitroad test]# gzip -tv file1.txt.gz
file1.txt.gz:    OK

我现在已经用文本编辑器手动修改了这个文件并添加了一个随机值,本质上是引入了损坏,现在它不再有效。

[jack@onitroad test]# gzip -tv file1.txt.gz
file1.txt.gz:
gzip: file1.txt.gz: invalid compressed data--crc error
gzip: file1.txt.gz: invalid compressed data--length error

压缩的 .gz 文件利用循环冗余校验 (CRC) 来检测错误。可以通过运行带有 -l 和 -v 标志的 gzip 来查看 CRC 值,如下所示。

[jack@onitroad test]# gzip -lv file1.txt.gz
method  crc     date  time           compressed        uncompressed  ratio uncompressed_name
defla 08db5c50 Jan 28 18:15                  40           167772160 100.0% file1.txt
    1. 连接多个文件
      多个文件可以连接成一个 .gz 文件。
gzip -c file1.txt > files.gz
gzip -c file2.txt >> files.gz

files.gz 现在包含 file1.txt 和 file2.txt 的内容,如果我们解压缩 files.gz,我们将得到一个名为“files”的文件,其中包含两个 .txt 文件的内容。输出类似于运行“cat file1.txt file2.txt”。相反,如果我们想创建包含多个文件的单个文件,我们可以使用支持 gzip 压缩的 tar 命令,如上面示例 8 中所述。

    1. gzip 包含的其他命令
      gzip 包提供了一些非常有用的命令来处理压缩文件,例如 zcat、zgrep 和 zless/zmore。
      正如我们可能从命令的名称中看出的那样,它们本质上是 cat、grep 和 less/more 命令,但它们直接对压缩数据起作用。这意味着我们可以轻松查看或者搜索压缩文件的内容,而无需在第二步中对其进行解压缩和查看或者搜索。
[jack@onitroad test]# zcat test.txt.gz
test
example
text
[jack@onitroad test]# zgrep exa test.txt.gz
example
Linux Gzip 示例

我们需要安装 gzip 包,默认情况下通常已经安装了它,如果没有安装,使用下面的方法安装。

RHEL:

yum install gzip

Debian:

apt-get install gzip
日期:2020-07-07 20:56:59 来源:oir作者:oir