[solaris]下tar命令如何排除文件夹[solaris]下tar命令如何排除文件夹今天处理重庆的事务碰到一个问题:在so
[solaris]下tar命令如何排除文件夹
[solaris]下tar命令如何排除文件夹
今天处理重庆的事务碰到一个问题:在solaris下如何使用
tar命令排除文件夹进行打包。向王伟请教了下终于解决了,拿出来大家分享一下:
场景及问题? ?现有目录结构如下:
? ?dir1
? ?dir1/dfile1.txt
? ?dir1/dd1/dfile.txt
? ?dir2
? ?dir3
? ?要求使用
tar进行打包,但是不包含目录[dir1/dd1].
解决方法? ?## 指定excludefiles文件内容 ##
? ?bash-2.05# echo dir1/dd1 > excludefiles
? ?## 查看excludefiles文件内容 ##
? ?bash-2.05# more excludefiles
? ?dir1/dd1
? ?## 打包excludefiles之外的所有内容 ##
? ?bash-2.05#
tar -cvfX mytest.tar excludefiles *
? ?a dir1/ 0K
? ?a dir1/fd1.txt 1K
? ?dir1/dd1 被排除
? ?a dir2/ 0K
? ?a dir3/ 0K
? ?a dir4/ 0K
? ?a ex 1K
? ?## 查看打包结果 ##
? ?bash-2.05#
tar -ft mytest.tar
? ?dir1/
? ?dir1/fd1.txt
? ?dir2/
? ?dir3/
? ?dir4/
? ?excludefiles
? ?说明:
tar的参数X用来指定排除的文件及目录,排除的文件及目录在excludefiles 文件中指定。
需要注意的问题? ? 1) 如果
tar -cvfX mytest.tar excludefiles * 改成
tar -cvfX mytest.tar excludefiles
./* 将无法排除指定内容目录及文件
? ? 2) 如果修改 excludefiles 内容为 ./dir1/dd1 ,则
tar -cvfX mytest.tar excludefiles
./* 可以排除指定内容, 而
tar -cvfX mytest.tar excludefiles * 则无法成功
? ? 分析原因 excludefiles 文件中指定内容应该和 ls命令执行结果相匹配,才能做到文件排除。
? ???如执行
tar -cvfX mytest.tar excludefiles /home2/zzyang/* , 则相应的excludefiles中内容应该为 /home2/zzyang/dir1/dd1
网上的其他方法? ? 网上找到的方法均无法解决该问题,貌似在linux下可以使用 --exclude=dirname 参数, 但是在solaris下无法执行成功。举一个网上的解决方法供大家参考:
[root@test xok.la]# ls -l
总用量 3
drwxr-xr-x? ?2 root root 1024 10月 29 21:20 xdir1
drwxr-xr-x? ?2 root root 1024 10月 29 21:21 xdir2
drwxr-xr-x? ?2 root root 1024 10月 29 21:21 xdir3
-rw-r--r--? ?1 root root? ???0 10月 29 21:21 xfile1
-rw-r--r--? ?1 root root? ???0 10月 29 21:21 xfile2
-rw-r--r--? ?1 root root? ???0 10月 29 21:21 xfile3
-rw-r--r--? ?1 root root? ???0 10月 29 21:21 xfile4
[root@test xok.la]#
tar zcvf xok.la.tar.gz * --exclude=xfile1 --exclude=xfile2 --exclude=xdir1
xdir2/
xdir3/
xfile3
xfile4
[root@test xok.la]#
tar ztf fd.tar.gz
xdir2/
xdir3/
xfile3
xfile4
[root@test xok.la]#
再次感谢王大拿。