Подтвердить что ты не робот

Параметр rsync --include не исключает другие файлы

пытается rsync файлы определенного расширения (*. sh), но ниже bash script все файлы передаются, почему?

from=/home/xxx
rsync -zvr --include="*.sh" $from/*  [email protected]$host:/home/tmp/
4b9b3361

Ответ 1

Вам нужно добавить -exclude all, и он должен появиться после -include

rsync -zvr --include="*.sh" --exclude="*" $from/*  [email protected]$host:/home/tmp/

Ответ 2

--include - для файлов, которые вы хотите не --exclude. Так как вы не исключили в будущих аргументах никакого эффекта. Вы можете сделать:

from=/home/xxx
rsync -zvr --include="*.sh" --include="*/" --exclude="*" "$from" [email protected]$host:/home/tmp/

Чтобы рекурсивно скопировать все .sh файлы (дополнительный --include, чтобы не пропускать каталоги, которые могли содержать файлы .sh)

Ответ 3

Я исправил проблему, изменяя - exclude = * на - exclude = *. *. Я понимаю, что * исключает папку, в которую входят файлы.

Ответ 4

Что бы добавить, по крайней мере, на мои машины (FreeBSD и OS X), это не сработает:

rsync -aP --include=*/ --include=*.txt --exclude=* * /path/to/dest

но это делает:

rsync -aP --include=*/ --include=*.txt --exclude=* . /path/to/dest

Да, подстановочный знак текущего каталога, похоже, отменяет исключение.