Ответ 1
Вам нужно добавить -exclude all, и он должен появиться после -include
rsync -zvr --include="*.sh" --exclude="*" $from/* [email protected]$host:/home/tmp/
пытается rsync файлы определенного расширения (*. sh), но ниже bash script все файлы передаются, почему?
from=/home/xxx rsync -zvr --include="*.sh" $from/* [email protected]$host:/home/tmp/
Вам нужно добавить -exclude all, и он должен появиться после -include
rsync -zvr --include="*.sh" --exclude="*" $from/* [email protected]$host:/home/tmp/
--include
- для файлов, которые вы хотите не --exclude
. Так как вы не исключили в будущих аргументах никакого эффекта. Вы можете сделать:
from=/home/xxx
rsync -zvr --include="*.sh" --include="*/" --exclude="*" "$from" [email protected]$host:/home/tmp/
Чтобы рекурсивно скопировать все .sh файлы (дополнительный --include
, чтобы не пропускать каталоги, которые могли содержать файлы .sh)
Я исправил проблему, изменяя - exclude = * на - exclude = *. *. Я понимаю, что * исключает папку, в которую входят файлы.
Что бы добавить, по крайней мере, на мои машины (FreeBSD и OS X), это не сработает:
rsync -aP --include=*/ --include=*.txt --exclude=* * /path/to/dest
но это делает:
rsync -aP --include=*/ --include=*.txt --exclude=* . /path/to/dest
Да, подстановочный знак текущего каталога, похоже, отменяет исключение.