rsync --include选项不排除其他文件

时间:2013-02-01 22:07:40

标签: bash rsync

尝试rsync某些扩展名(*。sh)的文件,但下面的bash脚本仍会传输所有文件,为什么?

from=/home/xxx
rsync -zvr --include="*.sh" $from/*  root@$host:/home/tmp/

4 个答案:

答案 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

是的,通配当前目录似乎会覆盖排除。