rsync某些文件,除了其余的,忽略.svn /目录,recursion

我正在使用rsync从共享复制一些文件到另一个。

recursion地,我需要:

  • 删除从原点删除的目标文件
  • 只能同步php和js文件
  • 排除其他所有文件types
  • 不要删除目标上的.svn/目录

如果我使用这个:

 rsync -zavC --delete --include='*.php' --include='*.js' --exclude="*" \ /origiin /destination 

然后rsync不recursion,因为exclude="*"排除所有文件,但也包括文件夹

如果我添加--include="*/"那么.svn/目录被删除(它也包含在内)

我怎样才能解决这个思维爆炸的困境?

uname -a:

Linux tux 3.9.2-1-ARCH#1 SMP PREEMPT Sat 5月11日20:31:08 CEST 2013 x86_64 GNU / Linux

rsync版本:

 rsync 3.0.9-6 

提前致谢

好吧,经过几次尝试,我整理了一下:

 rsync -vaiz --delete --exclude=.svn/ --include='*.php' --include='*.js' \ --include='*/' --exclude='*' --prune-empty-dirs \ --filter "protect .svn/" /origin /destination 

另一种方法

如果您不介意同步空的dirs,只需:

 rsync -vaiz --delete --exclude=.svn/ --include='*.php' --include='*.js' \ --include='*/' --exclude='*' /origin /destination 

关键是--exclude=.svn/之前的 – 包括的