我正在使用 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