用法:tar[选项...][FILE]...
选项与参数:
-c:建立打包档案,可搭配-v来查看文件中被打包的档名(filename)
-x:解打包或解压缩的功能,可以搭配-C(大写)在特定目录解开
-t:查看打包档案的内容含有哪些档名,重点在查看『档名』就是了
特别留意的是,-c,-t, -x不可同时出现在一串指令列中。
-j:透过bzip2的支持进行压缩/解压缩:此时档名最好为*.tar.bz2
-z:透过gzip的支持进行压缩/解压缩:此时档名最好为*.tar.gz
-v:在压缩/解压缩的过程中,将正在处理的文件名显示出来!
-ffilename: -f后面要立刻接要被处理的档名!建议-f单独写一个选项啰!
-C目录: 这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
-p:保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-P:保留绝对路径,亦即允许备份数据中含有根目录存在之意
-N:比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude=FILE:在压缩的过程中,不要将FILE打包!
范例:
1、将/etc目录下的所有文件全部打包到/tmp目录中
tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩
tar -jcvf /tmp/etc.tar.bz2 /etc <==以bzip2压缩后打包
tar-zcvf /tmp/etc.tar.gz /etc <==以gzip压缩后打包
#只使用tar打包的文件我们称之为tarfile,如果还有压缩的操作,就叫它tarball
#一般来说tar之后的选项顺序是可以颠倒的,但是-f一定要放到最后,即tar-jcvf或者tar-jvcf可以,tar-jvfc就不行了
#如果加j参数,文件名就是*.tar.bz2;如果是加z参数,文件名就是*.tar.gz或者*.tgz
#压缩时第一行会显示『tar:Removing leading `/' from membernames』信息,意思是压缩打包的每个文件都被拿掉了根目录,那是为了防止将来解压缩的时候覆盖原来的文件,加上选项-P就可以保留绝对路径,不过一般不介意这么做
#使用bzip2压缩时压缩比更大些
2、显示/tmp/etc.tar.bz2内有哪些文件?
tar -jtvf /tmp/etc.tar.bz2
#由于文件是.tar.bz2格式所以选项就加上j喽
3、在/usr目录下解压缩/tmp/etc.tar.bz2文件
首先cd/usr进入/usr目录下,再tar-jxvf /tmp/etc.tar.bz2解压缩即可;
或者直接tar-jxvf /tmp/etc.tar.bz2 -C /usr
#-C命令后加上目录表示在该目录下解压缩文件
4、仅解开单一档案,例如只需要把/tmp/etc.tar.bz2内的etc/passwd解压开
首先可以使用tar-jtf /tmp/etc.tar.bz2 | grep 'passwd'查找到所需要的文档
再使用tar-jxvf/tmp/etc.tar.bz2 etc/passwd解压即可
#grep'passwd'是撷取关键词操作
#‘|’是管道操作
5、打包/etc/root目录,但是不包含某些目录
tar -jcvf /tmp/etc.tar.bz2 --exclude=file1–exclude=file2 /etc/root
#--exclude=file表示不包含的意思
6、在/etc目录下比‘2012/04/05’新的档案才会备份
tar-N '2012/04/05' -jcvf /tmp/etc.tar.bz2/etc
7、将/etc整个目录一边打包一边在/tmp解压,不产生文件
cd/tmp<==进入/tmp目录
tar-cvf - /etc | tar -xvf -
#这个动作有点像是cp-r /etc /tmp啦~依旧是有其有用途的!
#要注意的地方在于输出档变成-而输入档也变成-,又有一个|存在~
#这分别代表standardoutput, standard input与管线命令啦!
#简单的想法中,你可以将-想成是在内存中的一个装置(缓冲区)。