Linux 系统 压缩和解压 gz 格式文件
引言
前面我们说了在 Linux 系统上比较常用的打包压缩解压 tar 及 zip 文件 的命令,那 Linux 上还有什么使用比较广泛的压缩解压文件的命令呢?那肯定有,那就是 .gz 格式文件。今天我们就来好好讲述下在 Linux 上如何压缩和解压 gz 格式文件!
压缩文件
命令
将文件压缩为 .gz 格式的文件使用的命令为 gzip
gzip 是 Linux 使用广泛的压缩程序,在系统中经常用来对文件进行压缩命令,通过此命令压缩得到的新文件,其名称后面会多处扩展名,此扩展名通常标记为“.gz”
格式
gzip [选项] 源文件
源文件指的是当进行压缩操作时,的普通文件
注意(特别强调✳️)
gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件 ,它不能像 zip 命令可以压缩文件、文件夹
常用选项及含义
gzip 命令常用选项及含义可见下表
选项
含义
-c
将压缩数据输出到标准输出中,并保留源文件
-d
对压缩文件进行解压缩
-r
递归压缩指定目录下以及子目录下的所有文件
-v
对于每个压缩和解压缩的文件,显示相应的文件名和压缩比
-l
列出压缩文件的相关信息
-压缩级别
用于指定压缩等级,压缩级别是从 1~9 的数字,-1 代表压缩速度更快,-9 代表压缩效果更好 ,默认压缩比是 -6
具体选项如何使用,大家可根据各自需求来选择使用
实例
「gzip 命令的基本使用」
gzip 压缩命令非常简单,它不需要指定压缩之后的压缩包名,只需指定源文件名即可
one). 基本压缩
查看文件
[root@wht ~]# ll
total 324
-rw-r--r-- 1 root root 10231 Oct 9 16:11 aa.java
-rw-r--r-- 1 root root 315955 Sep 3 14:25 logo.png
压缩 aa.java 文件
[root@wht ~]# gzip aa.java
查看压缩完成✅后的压缩文件
[root@wht ~]# ll
total 320
-rw-r--r-- 1 root root 5374 Oct 9 16:11 aa.java.gz
-rw-r--r-- 1 root root 315955 Sep 3 14:25 logo.png
从图中发现 压缩文件生成,但是会导致 源文件 也消失了,从而生成压缩文件。
相信看到这,一些我们的强迫症群体就会在想,那能不能在压缩文件的时候,不让源文件消失?
其实不瞒你说,也是可以的,不过很别扭,那该如何才能是源文件不消失,保存下来呢!那我们接着往下看
瞧好了啊!
two). 保留源文件压缩
将logo.png 压缩并不使源文件消失
[root@wht ~]# gzip -c logo.png > logo.png.gz
查看压缩完成✅后的 logo.png.gz 压缩文件,并查看源文件是否存在,查看发现存在
[root@wht ~]# ll
total 624
-rw-r--r-- 1 root root 5374 Oct 9 16:11 aa.java.gz
-rw-r--r-- 1 root root 315955 Sep 3 14:25 logo.png
-rw-r--r-- 1 root root 307502 Nov 28 16:03 logo.png.gz
three). 压缩目录
使用 gzip 命令压缩目录,需要使用 “-r” 选项,前面我们说了 gzip 不能 压缩目录 ,只能压缩目录内的所有文件 ,但是我们可以来试下,让大家看下效果
建立测试的目录 test 并查看
[root@wht ~]# mkdir test
[root@wht ~]# ll
total 628
-rw-r--r-- 1 root root 5374 Oct 9 16:11 aa.java.gz
-rw-r--r-- 1 root root 315955 Sep 3 14:25 logo.png
-rw-r--r-- 1 root root 307502 Nov 28 16:03 logo.png.gz
drwxr-xr-x 2 root root 4096 Nov 28 16:09 test
进入 test 目录,创建两个 测试文件 test1.txt 、 test2.txt并查看,查看后返回 test 所在目录
[root@wht ~]# cd test/
[root@wht test]# touch test1.txt test2.txt
[root@wht test]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 28 16:11 test1.txt
-rw-r--r-- 1 root root 0 Nov 28 16:11 test2.txt
[root@wht test]# cd ..
[root@wht ~]# ll
total 628
-rw-r--r-- 1 root root 5374 Oct 9 16:11 aa.java.gz
-rw-r--r-- 1 root root 315955 Sep 3 14:25 logo.png
-rw-r--r-- 1 root root 307502 Nov 28 16:03 logo.png.gz
drwxr-xr-x 2 root root 4096 Nov 28 16:11 test
压缩测试目录 test
[root@wht ~]# gzip -r test/
压缩目录,发现压缩过程中并没有报错
然后查看生成压缩包,发现test目录依旧存在,并没有变为压缩文件
[root@wht ~]# ll
total 628
-rw-r--r-- 1 root root 5374 Oct 9 16:11 aa.java.gz
-rw-r--r-- 1 root root 315955 Sep 3 14:25 logo.png
-rw-r--r-- 1 root root 307502 Nov 28 16:03 logo.png.gz
drwxr-xr-x 2 root root 4096 Nov 28 16:17 test
这时查看 test 目录下的内容, 发现 测试目录下的所有测试文件都被压缩为了压缩文件,原来gzip命令不会打包目录,而是把目录下所有的子文件分别压缩
[root@wht ~]# ll test/
total 8
-rw-r--r-- 1 root root 30 Nov 28 16:11 test1.txt.gz
-rw-r--r-- 1 root root 30 Nov 28 16:11 test2.txt.gz
原因
因为在 Linux 中,打包和压缩是分开处理的,而 gzip 命令只会压缩,不能打包,所以才会出现没有打包目录,而只把目录下的文件进行压缩的情况
压缩文件及目录就到这完结了,接下来我们来看 解压 gz 格式压缩包
解压压缩文件
命令
解压 .gz 格式文件需要用到 gunzip 命令
gunzip 是一个使用广泛的解压缩命令,它用于解压被 gzip 压缩过的文件(扩展名为 .gz)
格式
gunzip 命令可以查看和解压缩 gz 文件
gunzip [选项] 压缩文件名称
常用选项及含义
unzip 命令常用选项及含义可见下表
选项
含义
-r
递归处理,解压缩指定目录下以及子目录下的所有文件
-c
把解压缩后的文件输出到标准输出设备
-f
强制解压缩文件,不理会文件是否已存在等情况
-l
列出压缩文件内容
-t
测试压缩文件有无损坏,是否正常,但并不解压,不对其做解压缩操作
-v
显示命令执行过程
具体选项如何使用,大家也可根据各自需求来选择使用
接下来我们来举几个例子!
实例
one). 直接解压缩文件
查看文件压缩包
[root@wht ~]# ll
total 628
-rw-r--r-- 1 root root 5374 Oct 9 16:11 aa.java.gz
-rw-r--r-- 1 root root 315955 Sep 3 14:25 logo.png
-rw-r--r-- 1 root root 307502 Nov 28 16:03 logo.png.gz
drwxr-xr-x 2 root root 4096 Nov 28 16:17 test
将aa.java.gz 文件压缩包解压
[root@wht ~]# gunzip aa.java.gz
查看解压完成✅后的文件,可发现 aa.java.gz 压缩文件已经被解压,新生成了 aa.java ,源压缩文件也会消失,性质和压缩的时候是一样的!
[root@wht ~]# ll
total 632
-rw-r--r-- 1 root root 10231 Oct 9 16:11 aa.java
-rw-r--r-- 1 root root 315955 Sep 3 14:25 logo.png
-rw-r--r-- 1 root root 307502 Nov 28 16:03 logo.png.gz
drwxr-xr-x 2 root root 4096 Nov 28 16:17 test
接下来我们来解压目录下的压缩文件
two). 解压目录下的压缩文件包
要解压缩目录下的压缩文件包,同样需使用 "-r" 选项
查看 test 目录下的内容
[root@wht ~]# ll test/
total 8
-rw-r--r-- 1 root root 30 Nov 28 16:11 test1.txt.gz
-rw-r--r-- 1 root root 30 Nov 28 16:11 test2.txt.gz
将test 目录下的 压缩文件包解压
[root@wht ~]# gunzip -r test/
查看解压完成✅后的 test 目录下的内容
[root@wht ~]# ll test/
total 0
-rw-r--r-- 1 root root 0 Nov 28 16:11 test1.txt
-rw-r--r-- 1 root root 0 Nov 28 16:11 test2.txt
看到这,解压文件及目录的实例就到此结束了!
扩展
解压被 gzip 压缩过的文件,也可以使用 gzip 它自身的命令 ,直接使用以下命令就可以解压,前面我们在说 gzip的常用选项及含义表中也有说
gzip -d 压缩包
具体使用实例
查看 压缩包
[root@wht ~]# ll
total 320
-rw-r--r-- 1 root root 10231 Oct 9 16:11 aa.java
-rw-r--r-- 1 root root 307502 Nov 28 16:03 logo.png.gz
drwxr-xr-x 2 root root 4096 Nov 28 18:19 test
使用 gzip 解压 logo.png.gz 文件压缩包
gzip -d logo.png.gz
解压后,查看是否解压成功
[root@wht ~]# ll
total 328
-rw-r--r-- 1 root root 10231 Oct 9 16:11 aa.java
-rw-r--r-- 1 root root 315955 Nov 28 16:03 logo.png
drwxr-xr-x 2 root root 4096 Nov 28 18:19 test
「gunzip 和 gzip 自身解压 这两种解压方式大家可选择自己喜欢的方式解压」
总结
看到这,我们今天所分解的压缩及解压 gz 格式文件就到此完结了!是不是超级方便!一行命令搞定压缩解压!快去试试吧,非常nice !别着急,还有更多的秘密等着你来探索!