rsync 某些文件,排除其余文件,忽略 .svn/ 目录,递归

rsync 某些文件,排除其余文件,忽略 .svn/ 目录,递归

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

递归地,我需要:

  • 删除从原点移除的目标文件
  • 仅同步 php 和 js 文件
  • 排除所有其他文件类型
  • 不要删除.svn/目标目录

如果我使用这个:

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

然后 rsync 不是递归的,因为exclude="*"它排除了所有文件,也排除了文件夹

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

我该如何解决这个令人困惑的难题?

uname -a:

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

rsync 版本:

rsync 3.0.9-6

提前致谢

答案1

好的,经过多次尝试后我解决了这个问题:

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

另一种方法

如果您不介意同步空目录,只需:

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

关键是--exclude=.svn/--include

相关内容