尝试rsync某些扩展名(*。sh)的文件,但下面的bash脚本仍会传输所有文件,为什么?
from=/home/xxx rsync -zvr --include="*.sh" $from/* root@$host:/home/tmp/
答案 0 :(得分:17)
你需要添加--exclude all,它必须在--include
之后rsync -zvr --include="*.sh" --exclude="*" $from/* root@$host:/home/tmp/
答案 1 :(得分:15)
--include
是您不想要的文件--exclude
。由于您未在未来的参数中排除任何参数,因此没有任何效果。你可以这样做:
from=/home/xxx
rsync -zvr --include="*.sh" --include="*/" --exclude="*" "$from" root@$host:/home/tmp/
以递归方式复制所有.sh文件(额外--include
以不跳过可能包含.sh文件的目录)
答案 2 :(得分:5)
我修正了 - exclude = * 更改 - exclude = *。* 的问题,我明白*排除包含文件的文件夹。
答案 3 :(得分:2)
要添加的东西,至少在我的机器上(FreeBSD和OS X),这不起作用:
rsync -aP --include=*/ --include=*.txt --exclude=* * /path/to/dest
但这样做:
rsync -aP --include=*/ --include=*.txt --exclude=* . /path/to/dest
是的,通配当前目录似乎会覆盖排除。