1. 用 tar 打包目录时排除某个子目录或文件的方法:用到的参数:--exclude, -X
格式:--exclude=path/to/subdir
-X file
说明:--exclude等于后面的目录为相对目录,使用绝对目录则不生效。即路径最前面没有"/"
For example:
# mkdir -p testdir/{subdir01,subdir02}
# touch testdir/{a,b}{1,2} testdir/subdir01/s01 testdir/subdir02/s02
/tmp/testdir
-- a1
-- a2
-- b1
-- b2
-- subdir01/
-- s01
-- subdir02/
-- s02
对/tmp/testdir目录打包,但排除里面的subdir01目录:
tar zcf testdir.tar.gz testdir --exclude=testdir/subdir01
或者:
tar zcf testdir.tar.gz testdir --exclude=subdir01
如果是要排除多个目录,则使用多个--exclude参数:
tar zcf testdir.tar.gz testdir --exclude=subdir01 --exclude=testdir/subdir02
PS:在网上看到有说tar如果是GNU版本的话,--exclude要放在备份目录的前面,即:
tar zcf testdir.tar.gz --exclude=testdir/subdir01 testdir
我的是RHEL5U2下的tar版本,各自验证了一下,在上面的例子中--exclude放在后面是没有问题的,另外我还分别在RHEL4U4和CentOS4.6上面都测试过了,不知道为何会有这种放在前面说法,但个人还是蛮推荐这个习惯的,呵呵。
如果要排除的目录或文件有一二十个或者更多,且没什么规律可循,可以使用-X参数,先将要排除的目录或文件的相对路径放到一个文件里,然后调用这个文件即可:
[root@localhost tmp]# echo "testdir/subdir01">>xfile
[root@localhost tmp]# echo "testdir/a1">>xfile
# tar -zcfX testdir.tar.gz xfile testdir
ps:使用调用文件的方式时要备份的目录必须放在最后。
2. "tar - xxx"格式用法:
[root@localhost tmp]# tar cf - testdir|gzip -9>testdir.tar.gz
应该是一种比较老的做法了,现在的tar都直接支持gz或者bz2压缩,分别加上-z和-j参数即可。不过挺灵活.比如我想设置gzip的压缩比,使用-9参数,如上.单独使用tar czf就不能指定压缩比参数了
阅读(2840) | 评论(0) | 转发(0) |