Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2451382
  • 博文数量: 540
  • 博客积分: 11289
  • 博客等级: 上将
  • 技术积分: 6160
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-11 20:27
个人简介

潜龙勿用,见龙在田

文章分类

全部博文(540)

文章存档

2018年(2)

2013年(5)

2012年(24)

2011年(104)

2010年(60)

2009年(217)

2008年(128)

分类: LINUX

2009-05-11 16:17:36


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






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