6.5 zip压缩工具
前面的三个命令都不支持压缩目录,但是zip支持:
首先压缩文件
[root@localhost gzip]# yum -y install zip
[root@localhost gzip]# zip b.txt.zip b.txt
adding: b.txt (deflated 74%)
[root@localhost gzip]# ls //原文件依旧存在。不会被删除
b.txt.zip b.txt
[root@localhost gzip]# du -sh b.txt.zip //压缩程度一般
376Kb.txt.zip
压缩目录
[root@localhost gzip]# zip-rtwo.zip two //也可以一起压缩文件在里面:文件+目录
[root@localhost gzip]# du -sh two.zip
384Ktwo.zip
解压缩:
[root@localhost gzip]# yum -y install unzip
[root@localhost gzip]# unzip two.zip //由于压缩时原文件没有删除,所以解压到相同目录,同名文件会提示,进行处理:覆盖、替换、改名
Archive: two.zip
replace two/test1.111? [y]es, [n]o, [A]ll, [N]one, [r]ename:
指定目录解压:
[root@localhost gzip]# unzip two.zip-d/root/
Archive: two.zip
......
[root@localhost gzip]# ls /root/
two
[root@localhost gzip]# unzip two.zip -d /root/aaa
//不可以在解压时就修改名称,而是会创建一级目录
Archive: two.zip
......
[root@localhost gzip]# ls /root/aaa/
two
查看:
文件无法查看,但是可以查看压缩的目录中包括哪些文件:
[root@localhost gzip]# unzip -l two.zip
Archive: two.zip
Length Date Time Name
--------- ---------- ----- ----
0 06-24-2018 16:53 two/
0 06-24-2018 16:52 two/three/
0 06-24-2018 16:52 two/test1.111
26832 06-24-2018 16:52 two/1.txt
11505 06-24-2018 16:52 two/1.txt.bak
1460676 06-24-2018 16:53 two/c.txt
--------- -------
1499013 6 files
6.6 tar打包工具
6.7 打包并压缩
tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩( 命令)。
tar命令的使用:首先要知道tar命令的相关参数
-A或--catenate:新增文件到以存在的备份文件;
-B:设置区块大小;
-c或--create:建立新的备份文件;
-C :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-d:记录文件的差别;
-x或--extract或--get:从备份文件中还原文件;
-t或--list:列出备份文件的内容;
-z或--gzip或--ungzip:通过gzip指令处理备份文件;
-Z或--或--:通过compress指令处理备份文件;
-f或--=:指定备份文件;
-v或--verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-:确认压缩文件的正确性;
-p或--same-permissions:用原来的文件权限还原文件;
-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
-N 或 --newer=:只将较指定日期更新的文件保存到备份文件里;
--exclude=:排除符合范本样式的文件。
eg:
tar -cvf log.tar log2012.log 仅打包,不压缩!
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
在选项f之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加z选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;如果加j选项,则以.tar.bz2来作为tar包名。
查阅上述tar包内有哪些文件:
tar -ztvf log.tar.gz
由于我们使用 gzip 压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上z这个选项了。
文件备份下来,并且保存其权限:
tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log
这个-p的属性是很重要的,尤其是当您要保留原本文件的属性时。
备份文件夹内容是排除部分文件:
tar --exclude scf/ -zcvf scf.tar.gz scf/*
其实最简单的使用 tar 就只要记忆底下的方式即可:
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
查 询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录