Chinaunix首页 | 论坛 | 博客
  • 博客访问: 273818
  • 博文数量: 103
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 705
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-02 16:15
文章分类

全部博文(103)

文章存档

2014年(8)

2013年(95)

我的朋友

分类: LINUX

2013-11-06 17:06:14

假设现有目录结构如下:
>ls -1
empty/
general/
genreport.sh*
main.cfg
printhel.perl
sample.txt
touchdate.txt

 

使用tar进行打包,但是希望不包含文件sample.txt和目录empty/。
指定excludefile.txt文件内容

>echo empty/ > excludefile.txt
>echo sample.txt >> excludefile.txt
当然,还要排除文件excludefile.txt本身
>echo excludefile.txt >> excludefile.txt

 

>cat excludefile.txt
empty/
sample.txt
excludefile.txt


打包当前目录下的除了sample.txt,empty/的所有文件:
>tar -cvfX tarfile.tar excludefile.txt *
a empty excluded
a excludefile.txt excluded
a general/ 0K
a general/t.txt 1K
a genreport.sh 0K
a main.cfg 6K
a printhel.perl 1K
a sample.txt excluded
a touchdate.txt 0K

 

查看tar文件的内容:
>tar -tf tarfile.tar
general/
general/t.txt
genreport.sh
main.cfg
printhel.perl
touchdate.txt

 

 

OK.
说明:Solaris中tar的参数X用来指定排除的文件及目录,排除的文件及目录在exclude files文件中指定,可以指定多个X。

 

注意
1. 如果 tar -cvfX tarfile.tar excludefile.txt * 改成 tar -cvfX tarfile.tar excludefile.txt 
则需要修改文件excludefile.txt的内容为
./empty/
./sample.txt
./excludefile.txt

又若改成 tar -cvfX tarfile.tar excludefile.txt /home/shell/*则相应的excludefile.txt中内容也应该为
/home/shell/empty/
/home/shell/sample.txt
/home/shell/excludefile.txt

原因是文件excludefile.txt中指定内容的目录必须与tar命令中制定打包的目录完全匹配(也就说应该和ls命令执行结果相匹配),才能做到文件排除。

 

2. 在文件excludefile.txt中的元字符将不起作用,例如你指定*.log并不能排除所有扩展名为.log的文件。

 


tar命令常用的简单用法
1.打包文件或目录
tar cvf tarfile.tar dir/subdir *.c

 

2.查看tar文件内容列表
tar tvf tarfile.tar

 

3.解包tar文件
tar xvf tarfile.tar


……


[tar命令的主选项:]

c 创建新的tar文档。假如用户想备份一个目录或是一些文档,就要选择这个选项。

r 把要存档的文档追加到档案文档的未尾。例如用户已作好备份文档,又发现更有一个目录或是一些文档忘记备份了,这时能够使用该选项,

将忘记的目录或文档追加到备份文档中。

t 列出tar文档的内容。

u 更新tar文档。假如在文档中很难找到要更新的文档,则把他追加到tar文档的最后。

x 从tar文档中释放文档。

 

[tar命令的辅选项:]
f 使用档案文档或设备,这个选项通常是必选的。

v 报告tar处理的详细信息。如无此选项,tar不报告文档信息。

阅读(1717) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~