omit name files exclude bash rsync

bash - name - rsync linux exclude files



La opciĆ³n rsync--include no excluye otros archivos (4)

intentando rsync archivos de cierta extensión (* .sh), pero la siguiente secuencia de comandos bash todavía transfiere todos los archivos, ¿por qué?

from=/home/xxx rsync -zvr --include="*.sh" $from/* root@$host:/home/tmp/


Debe agregar un --excluir todo y tiene que venir después del --incluir

rsync -zvr --include="*.sh" --exclude="*" $from/* root@$host:/home/tmp/


En lo que hay que añadir, al menos en mis máquinas (FreeBSD y OS X), esto no funciona:

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

pero esto hace:

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

Sí, los caracteres comodín del directorio actual parecen anular la exclusión.


Solucioné el problema cambiando --exclude = * por --exclude = *. * , Entiendo que * excluir carpeta donde están los archivos incluidos.


--include es para qué archivos no desea --exclude . Como no has excluido ninguno en futuros argumentos, no hay ningún efecto. Tu puedes hacer:

from=/home/xxx rsync -zvr --include="*.sh" --include="*/" --exclude="*" "$from" root@$host:/home/tmp/

Para copiar de forma recursiva todos los archivos .sh (la --include extra --include no omitir directorios que puedan contener archivos .sh)