尝试 rsync 某些扩展名(*.sh)的文件,但下面的 bash 脚本仍然传输所有文件,为什么?
从=/家/xxx rsync -zvr --include="*.sh" $from/* root@$host:/home/tmp/
您需要添加一个 --exclude all 并且它必须在 --include 之后
rsync -zvr --include="*.sh" --exclude="*" $from/* root@$host:/home/tmp/
--include
是你不想要的文件--exclude
。由于您没有在未来的参数中排除任何参数,因此没有效果。你可以做:
from=/home/xxx
rsync -zvr --include="*.sh" --include="*/" --exclude="*" "$from" root@$host:/home/tmp/
递归复制所有 .sh 文件(--include
不跳过可能包含 .sh 文件的目录的额外内容)
要添加的东西,至少在我的机器(FreeBSD 和 OS X)上,这是行不通的:
rsync -aP --include=*/ --include=*.txt --exclude=* * /path/to/dest
但这确实:
rsync -aP --include=*/ --include=*.txt --exclude=* . /path/to/dest
是的,通配符当前目录似乎覆盖了排除。
我修复了通过--exclude=*.*更改--exclude=*的问题,我知道 * exclude 包含文件所在的文件夹。