试图rsync文件的某些扩展名(*.sh),但下面的bash脚本仍然传输所有文件,为什么?
from=/home/xxx rsync -zvr --include="*.sh" $from/* root@$host:/home/tmp/
Joh*_*hnQ 18
你需要添加--exclude all,它必须在--include之后
rsync -zvr --include="*.sh" --exclude="*" $from/* root@$host:/home/tmp/
Run Code Online (Sandbox Code Playgroud)
tha*_*guy 18
--include是您不想要的文件--exclude.由于您未在未来的参数中排除任何参数,因此没有任何效果.你可以做:
from=/home/xxx
rsync -zvr --include="*.sh" --include="*/" --exclude="*" "$from" root@$host:/home/tmp/
Run Code Online (Sandbox Code Playgroud)
以递归方式复制所有.sh文件(额外--include的不跳过可能包含.sh文件的目录)
要补充的是,至少在我的机器(FreeBSD 和 OS X)上,这不起作用:
rsync -aP --include=*/ --include=*.txt --exclude=* * /path/to/dest
Run Code Online (Sandbox Code Playgroud)
但这确实:
rsync -aP --include=*/ --include=*.txt --exclude=* . /path/to/dest
Run Code Online (Sandbox Code Playgroud)
是的,通配当前目录似乎覆盖排除。
我修复了--exclude =* by --exclude =*.*的问题,我明白*排除包含文件的文件夹.