关于压缩与解压的指令,《鸟哥的私房菜》中其实讲的比较详细了,我这里只是在鸟哥的基础上,提炼出一点内容,方便自己以后查看,谁叫自己脑袋瓜子记性不好咧。。
常用的压缩指令有:
gzip、bzip2和tar(compress已经out了,也就不管了)
--gzip:
建立的压缩档后缀名为.gz,zcat指令用来查看后缀名为gz的压缩档
[root@www ~]# gzip [-cdtv#] 档名
[root@www ~]# zcat 档名.gz
选顷不参数:
-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;
-d :解压缩的参数; (用来解压的)
-t :可以用来检验一个压缩文件的一致性~看看档案有无错误;
-v :可以显示出原档案/压缩文件案的压缩比等信息;
-# :压缩等级,-1 最忚,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6
当你使用 gzip 进行压缩时,在预设的状态下原本的档案会被压缩成为 .gz 的档名, 源文件就不再存在了。
若要保留源文件可以通过-c选项来处理,如下所示即可,这样源文件就还会继续存在。
[root@www tmp]# gzip -c man.config > man.config.gz
--bzip2
bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的,bzcat是用来查看后缀为bz2的压缩档
[root@www ~]# bzip2 [-cdkzv#] 档名
[root@www ~]# bzcat 档名.bz2
选顷不参数:
-c :将压缩的过程产生的数据输出到屏幕上! (用法同gzip)
-d :解压缩的参数 (解压必须带此选项)
-k :保留源文件,而不会删除原始的档案喔!
-z :压缩的参数 (默认的是压缩参数)
-v :可以显示出原档案/压缩文件案的压缩比等信息;
-# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最差!
其实前面说的这两条指令用的不是很多,只要掌握了tar命令就可以了,tar命令中的一些选项就攘括了上面的两种指令功能,
--tar
tar指令不仅能解压缩,还可以打包与解包,这相比上面两条指令的优势就是上面的两条指令只能对单个文档进行操作,tar可以针对目录进行操作
[root@www ~]# tar [-j|-z] [cv] [-f 建立的档名] filename... <==打包不压缩
[root@www ~]# tar [-j|-z] [tv] [-f 建立的档名] <==察看档名
[root@www ~]# tar [-j|-z] [xv] [-f 建立的档名] [-C 目录] <==解压缩
选顷不参数:
-c :建立打包档案,可搭配 -v 来察看过程中被打包的档名(filename) (创建压缩档用到)
-t :察看打包档案的内容含有哪些档名,重点在察看『档名』就是了;
-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 (解压档用到)
特别留意癿是, -c, -t, -x 不可同时出现在一串指令列中。
-j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
-z :透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz 两种解压方式
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
-f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项啰! (必选哦)
-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-p(小写) :保留备份数据的原本权限和属性,常用于备份(-c)重要的配置文件
-P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
--exclude=FILE:在压缩的过程中,不要将 FILE 打包!
tar常用的选项实例如下:
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的档案或目录名称
查 询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
上面是用bzip2的方式进行解压缩的,若要用gzip的方式只需将j替换成z即可
其实只用掌握以上tar命令用法就足矣啦。。
在 tar 的使用中,有一种方式最特殊,那就是透过标准输入输出癿数据流重导向(standard input/standard output), 以及管线命令 (pipe) 的方式,将待处理的档案一边打包一边解压缩到目标目录去。
# 1. 将 /etc 整个目录一边打包一边在 /tmp 解开
[root@www ~]# cd /tmp
[root@www ~]# tar -cvf - /etc | tar -xvf -
# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!
# 要注意癿地方在于输出档变成 - 而输入档也变成 - ,又有一个 | 存在~