Параметр rsync --include не исключает другие файлы пытается rsync файлы определенного расширения (*. sh), но ниже bash script все файлы передаются, почему? from=/home/xxx rsync -zvr --include="*.sh" $from/* [email protected]$host:/home/tmp/ Ответ 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 Да, подстановочный знак текущего каталога, похоже, отменяет исключение.
Ответ 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 Да, подстановочный знак текущего каталога, похоже, отменяет исключение.