分类: 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不报告文档信息。