« 上一篇下一篇 »

tar命令在Linux文件系统下如何运用

1.功能说明
tar是Linux下经常使用的归档工具,是对文件或者目录进行打包归档,归成一个文件,但是并不进行压缩。其格式如下:
tar [主选项+辅助选项] 文件或者目录
tar命令的选项很多,这里列出一些经常用到的主选项,如表4.31所示。
表4.31                                                tar命令的主选项及其说明

 

主选项
含  义
-c
创建新的文件
-r
把要归档的文件追加到档案文件的末尾
-t
列出档案文件中已经归档的文件列表
-x
从打包的档案文件中还原出文件
-u
更新档案文件,用新的文件替换档案中的原始文件

 

 
辅助选项的详细信息如表4.32所示。
表4.32                                              tar命令的辅助选项及其说明

 

辅助选项
含  义
-z
调用gzip命令在文件打包的过程中进行压缩/解压文件
-w
在还原文件时,把所有文件的修改时间设定为现在时间
-j
调用bzip2命令在文件打包的过程中进行压缩/解压文件
-Z
调用compress命令过滤档案
-f
“-f”选项后面紧跟档案文件的存储设备,默认是磁盘,需要指定档案文件名;如果是磁带,只需指定磁带设备名即可。注意,在“-f”选项之后不能再跟任何其他选项,也就是说“-f”必须是tar命令的最后一个选项
-v
指定在创建归档文件过程中,显示各个归档文件的名称
-p
在文件归档的过程中,保持文件的属性不发生变化
-N “yyyy/mm/dd”
在指定日期之后的文件才会被打包到档案文件中
–exclude file
在打包过程中,不将指定file文件打包

 

 
2.举例
(1)将/etc目录下的所有文件打包,并显示打包的详细文件,设置打包文件名为etc.tar,同时保存文件到/opt目录下。
[root@dbbackup oracle]#tar -cvf /opt/etc.tar /etc
这里的档案名“etc.tar”名字是我们自己随便取的,Linux上利用tar命令打包出来的档案文件我们一般用.tar作为标识。
(2)将/etc目录下的所有文件打包并压缩,然后显示打包的详细文件,设置打包文件名为etc.tar.gz,同时保存文件到/opt目录下。
[root@dbbackup oracle]# tar -zcvf /opt/etc.tar.gz /etc
[root@dbbackup oracle]#tar -jcvf /opt/etc.tar.bz2 /etc
“zcvf”选项表示在打包完成后调用gzip命令对档案文件进行压缩,这里的档案名“etc.tar.gz”也是我们随便取的,“.tar”表示是用tar命令打包的,“.gz”表示调用了gzip命令进行了压缩。同理,“jcvf”选项表示在打包完成后调用bzip2命令对档案文件进行压缩,档案命名标识中“.bz2”表示调用了bzip2命令进行了压缩处理。
这里对档案文件的取名没有硬性的规定,上面采用的命名规则,可以很方便地让我们知道文件的类型以及对应的解压方式,因为压缩方式不同,解压方式也是不同的。同时,这种规则也是大家都默许了的一种潜规则。如果你不喜欢这种规则,完全可以按照自己喜欢的方式命名档案文件。
(3)查阅上面/opt/etc.tar.gz压缩包的内容。
[root@dbbackup oracle]#tar -ztvf /opt/etc.tar.gz
[root@dbbackup oracle]#tar -jtvf /opt/etc.tar.gz
 

tar命令的使用方法如下:

tar [-cxtzjvfpPN] 文件与目录
参数说明:
-c :建立一个打包文件;
-x :解开一个打包文件;
-t :查看 tar包里面的文件;
-z :打包后用gzip压缩,生成.tar.gz文件;
-j :打包后用zip2压缩,生成.tar.bz2文件;
-v :压缩的过程中显示文件;
-f :使用文件名,请留意,在f之后要立即接文件名,不要再加其它参数;
-p :保持原文件的属性;
-P :使用绝对路径来压缩;
-N :设定日期(yyyy/mm/dd),比后面接的日期还要新的文件才会被打包进新建的文件中;
--exclude FILE:在打包的过程中,不要将剔除FILE文件。

实例:
1、打包压缩:
tar cvf /dir/file.tar /dir/file  #仅打包,不压缩
tar zcvf /dir/file.tar.gz /dir/file  #打包后,以gzip压缩
tar jcvf /dir/file.tar.bz2 /dir/file  #打包后,以bzip2压缩
tar zcvpf /dir/file.tar.gz /dir/file  #打包后,以gzip压缩,并且保留权限信息
tar -N '2007/01/15' zcvf /dir/file.tar.gz /dir/file  #打包压缩比2007/01/15新的文件
tar --exclude /dir1/file1 zcvf file.tar.gz /dir1/* /dir2  #打包压缩dir1和dir2中所有文件,除了/dir1/下的file1文件
其实上面的那些后缀,比如tar,tar.gz等等,我们可以省略,只要你知道以什么格式压缩的就行,不然你就没法解压了

2、解压:
tar xvf backup.tar
tar zxvf /dir/file.tar.gz
tar zxvf /dir/file.tar.Z
tar jxvf /dir/file.tar.bz2
tar jxvf /dir/file.tbz

3、有时候压缩和解压一起做会方便很多,比如
将/dir/file打包后直接解开在/dir2下面,而不用产生文件
tar cvf - /dir/file | tar xvf - /dir2