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就不能指定压缩比参数了

共有 0 条评论