gzip/gunzip 指令

警告
本文最后更新于 2023-10-22,文中内容可能已过时。

gzip/gunzip指令

Linux gzip 命令用于压缩文件。

gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出.gz的扩展名。

Linux gunzip 命令用于解压文件。

gunzip 是个使用广泛的解压缩程序,它用于解开被 gzip 压缩过的文件,这些压缩文件预设最后的扩展名为 .gz

事实上 gunzip 就是 gzip 的硬链接,因此不论是压缩或解压缩,都可通过 gzip 指令单独完成

gzip只能压缩单个文件,无法压缩文件夹。想要压缩文件夹,只能用tar + gzip。因为gzip不负责打包,tar负责打包。这就是为什么打包之后再压缩的后缀为tar.gz

gzip会修改源文件的内容(压缩)和文件名(加上.gz)的后缀gzip压缩的是源文件本身,所以不会增加新文件,比如一个压缩包,

1
2
gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][文件...]
gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][目录]
  • -c--stdout--to-stdout:把压缩后的文件输出到标准输出设备,不去更动原始文件。

  • -d--decompress----uncompress 解开压缩文件。gzip本身就可以解压缩文件,不需要gunzip

  • -f--force:强行压缩文件。不理会文件名称或硬链接是否存在以及该文件是否为符号链接。

  • -l--list:列出压缩文件的相关信息。

  • -n--no-name:压缩文件时,不保存原来的文件名称及时间戳记。

  • -N--name:压缩文件时,保存原来的文件名称及时间戳记。

  • -q--quiet:不显示警告信息。

  • -r--recursive:递归处理,将指定目录下的所有文件及子目录一并处理。注意,这里不是将文件夹整体压缩,而是递归文件夹里的文件,压缩每个文件,添加.gz的后缀

  • -S <压缩字尾字符串>----suffix <压缩字尾字符串>:更改压缩字尾字符串。

  • -t--test:测试压缩文件是否正确无误。

  • -<压缩效率>:压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。

  • --best:此参数的效果和指定-<压缩效率>  为 “-9” 相同。

  • --fast:此参数的效果和指定-<压缩效率>  为 “-1” 相同。

简单实践:

gzip source0/*:压缩

gzip -d source0/*:解压

注意,gzip无法处理硬链接的文件

当一个文件有其他硬链接的时候,gzip不会压缩此文件,因为gzip会修改文件内容。你可以带上 -f参数强行压缩,但是那样的话,这个文件的其他硬链接就无法使用了,会看不到文件内容,文件内容为空。如果一个文件有软链接则还是会正常被压缩,只是压缩之后,软链接无法找到其指的文件,因为目标文件的文件名文件内容都变了。

无法直接处理文件夹

需要带上 -r 参数,递归处理。

源文件可以有多个

0%