linux系统常见知识点

这里首先需要明确两个概念:打包和压缩。打包是指将一大堆文件或目录合并成一个总的文件;压缩则是将一个大容量的文件通过一些压缩算法(gzip、bzip2等命令)变成一个小容量的文件。Linux/Unix下的压缩命令通常都只能对一个文件进行压缩操作,所以通常需要使用tar命令对文件进行打包,然后进行压缩操作。

一、tar命令常用的功能

-c:创建新的tar文件

-x:解开tar文件

-t:列出tar文件中包含的文件的信息

-r:附加新的文件到tar文件中

注意:以上功能是独立的,一次只能使用一个。

注意:.tgz是.tar.gz的简称

二、tar命令常用的参数

-z:使用gzip进行解压缩

-j:使用bzip2进行解压缩

-Z:使用compress进行解压缩

-v:显示解压缩执行过程

-f:指定要处理的文件名

注意:如果需要使用-f参数,需要将f参数放在所有参数最后面,在f之后要立即接文件名,不能有其他参数。

例如:tar -zxvf /tmp/etc.tar.gz是正确的, tar -zxfv /tmp/etc.tar.gz则是错误的。

三、tar命令使用实例

1.打包/etc目录下所有文件

tar -cvf /tmp/etc.tar /etc

2.打包并压缩/etc目录下所有文件

tar -zcvf /tmp/etc.tar.gz /etc         //以gzip压缩

tar -jcvf /tmp/etc.tar.bz2 /etc        //以bzip2压缩

tar -Zcvf /tmp/etc.tar.Z /etc          //以compress压缩

3.查看打包压缩文件的文件内容

tar -tvf /tmp/etc.tar                       //查看打包文件

tar -ztvf /tmp/etc.tar.gz                //查看以gzip压缩的文件

tar -jtvf /tmp/etc.tar.bz2               //查看以bzip2压缩的文件

tar -Ztvf /tmp/etc.tar.Z                 //查看以compress压缩的文件

4.解压打包压缩文件

tar -xvf /tmp/etc.tar               //打开tar打包文件

tar -zxvf /tmp/etc.tar.gz               //解压以gzip压缩的文件

tar -jxvf /tmp/etc.tar.bz2              //解压以bzip2压缩的文件

tar -Zxvf /tmp/etc.tar.Z                //解压以compress压缩的文件

注意:/etc/share目录下有 123.c 456.txt tp.ko

进入/etc下:

tar –zcvf share.tar.gz ./share

或tar- zcvf share.tar.gz ./share/*

进入/etc/share下:

tar –zcvf share.tar.gz *

注意两者生成的share.tar.gz 的区别:

tar –zcvf share.tar.gz ./share

tar- zcvf share.tar.gz ./share/*      ————————这两个的share.tar.gz解压后我们看到的是一个share目录

进入/etc/share下:tar –zcvf share.tar.gz *   ————这个的share.tar.gz解压后看到的是123.c 456.txt tp.ko这几个文件。

为什么要说这两种呢?因为我们在有些shell的命令中解压文件,有时我们可能需要的是解压后直接是share目录下的东西,而不是一个share。这里并不是说第二种解压好,只是在工作时要注意,我出现过使用第一种压缩导致无法加载目录下的一些驱动。

 tar压缩排除某个目录或文件:在很多时候,我们要对某一个目录打包,而这个目录下有几十个子目录和子文件,我们需要在打包的时候排除其中1、2个目录或文件。

这时候我们在用tar命令打包的时候,增加参数 --exclude 就能达到目的。

打包的时候我们要排除 tomcat/logs 目录

tar -zcvf tomcat.tar.gz tomcat --exclude=tomcat/logs

如果要排除多个目录,增加 --exclude 即可,如下命令排除logs和libs两个目录及文件xiaoshan.txt:

tar -zcvf tomcat.tar.gz tomcat --exclude=tomcat/logs --exclude=tomcat/libs --exclude=tomcat/xiaoshan.txt

这里要说一下注意事项:

大家都知道linux在使用tab键的时候会对目录名称自动补全,这很方便,大家也比较常用。

如我们输入 tomcat/lo 的时候按tab键,命令行会自动生成 tomcat/logs/ ,对于目录,最后会多一个 “/”

这里大家要注意的时候,在我们使用tar 的--exclude 命令排除打包的时候,不能加“/”,否则还是会把logs目录以及其下的文件打包进去。

错误写法:

tar -zcvf tomcat.tar.gz --exclude=tomcat/logs/ --exclude=tomcat/libs/ tomcat

正确写法:

tar -zcvf tomcat.tar.gz --exclude=tomcat/logs --exclude=tomcat/libs tomcat

强调:等号后面直接跟目录名!我曾经自作聪明跟了./或者绝对路径,都会导致全部打包压缩,达不到效果!

tar -zcvf modules.tar.gz * --exclude=my.sh

tar -zcvf modules.tar.gz * --exclude=./my.sh-------这个还是会把my.sh 打包进去

tar -zxvf modules.tar.gz -C ./modules

-C:指定modules.tar.gz解压到当前目录下的modules的目录下

猜你喜欢

转载自blog.csdn.net/newobject1788/article/details/82526339