本文主要是介绍Linux入门真经-039压缩、解压与归档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们为什么需要压缩?一般是以下原因:
1、文件太大,我们将其压缩降低磁盘的空间使用量
2、服务器带宽不够,我们将向客户端推送的内容(如web资源)进行压缩,到达客户端之后再用相关协议去解压缩。用CPU的性能和时间去节省网络带宽和延迟。
其中,第一点就是我们今天主要介绍的压缩和解压工具。第二点,现在很多web中间件(如httpd、nginx等)可以实现,以后再说。
压缩算法多种多样,因此,压缩/解压缩工具、文件格式也就显得多样化起来,如:
压缩命令/解压缩命令 压缩格式文件
compress/uncompress xxx.Z
gzip/gunzip xxx.gz
bzip2/bunzip2 xxx.bz2
xz/unxz .xz
zip/unzip xxx.zip
以下进行分组介绍
1、gzip/gunzip/zcat
压缩:
gzip [OPTION]... FILE...
-d:解压缩,相当于gunzip;
-#:指定压缩比,默认是6;数字越大压缩比越大(1-9);
-c:将压缩结果输出至标准输出;
gzip -c FILE > /PATH/TO/SOMEFILE.gz
gzip压缩或解压缩后会删除原文件,-c重定向到文件则保留源文件
解压:
gunzip [OPTION]... FILE...
直接查看压缩后的文本内容无需解压:
zcat FILE…
2、bzip2/bunzip2/bzcat
压缩:
bzip2 [OPTION]... FILE...
-d:解压缩
-#:指定压缩比;默认是6;数字越大压缩比越大(1-9);
-k:keep,保留原文件;
解压缩:bunzip2
不压缩直接查看文本内容:bzcat
3、xz/unxz/xzcat
xz [OPTION]... FILE...
-d:解压缩
-#:指定压缩比;默认是6;数字越大压缩比越大(1-9);
-k:保留原文件;
4、zip/unzip
可以将多个文件压缩/归档为单个文件
后缀名:.zip
归档
如果要将一个目录下的所有文件一并压缩,需要先归档(默认归档并不具备压缩功能,且默认不会删除源文件)
归档常用命令:tar
tar [OPTION]... FILE...
(1) 创建归档(-f需要带参数,所以要放在后面)
-c-f /PATH/TO/SOMEFILE.tar FILE...
-cf /PATH/TO/SOMEFILE.tar FILE...
(2) 展开归档
-xf /PATH/FROM/SOMEFILE.tar
-xf /PATH/FROM/SOMEFILE.tar -C /PATH/TO/SOMEDIR
如果tar进行了压缩,-xf能自动进行解压缩
(3) 查看归档文件的文件列表
-tf /PATH/TO/SOMEFILE.tar
归档完成后通常需要压缩,结合此前的压缩工具,就能实现压缩多个文件了;
(4) 归档压缩(tar)
-z:调用gzip2
-zcf /PATH/TO/SOMEFILE.tar.gz FILE...
解压缩并展开归档:-zxf /PATH/TO/SOMEFILE.tar.gz
-j:调用bzip2
-jcf:类比,你应该懂得。。
-jxf:类比,你应该懂得。。
-J: 调用xz
-Jcf:类比,你应该懂得。。
-Jxf:类比,你应该懂得。。
注:tar默认使用相对路径,若使用绝对路径需要使用选项-P。但是是用绝对路径后,解压后的文件是有母目录的(如/var/log/a.log文件归档到tmp下面,展开后不是/tmp/a.log而是/tmp/var/log/a.log,所以还是建议使用相对路径)
练习:
把/var/log目录下所有的文件归档至tmp目录下并压缩,命名为log.tar.gzip。将tar包解压缩并展开。
[root@localhost ~]# cd /var/log
[root@localhost log]# tar -czf /tmp/log.tar.gz *.log
[root@localhost log]# ll /tmp/log.tar.gz
-rw-r--r--. 1 root root 441 Aug 30 16:07/tmp/log.tar.gz
先瞅瞅里面有啥
[root@localhost log]# cd /tmp/
[root@localhost tmp]# tar -tf log.tar.gz
boot.log
yum.log
解压并展开归档
[root@localhost tmp]# mkdir mylog
[root@localhost mylog]# tar -xf ../log.tar.gz
[root@localhost mylog]# ls
boot.log yum.log
或者
[root@localhost tmp]# rm -rf mylog
[root@localhost tmp]# mkdir mylog
[root@localhost tmp]# tar -xf log.tar.gz -C mylog/
[root@localhost tmp]# ls mylog/
boot.log yum.log
文件系统的相关内容章节就到此为止了。下一节起,我们将开启一个新的篇章。介绍计算机网络的通信原理。
关注本公众号获取最新更新
每周一、三、五稳定更新
这篇关于Linux入门真经-039压缩、解压与归档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!