La otra solución no funciona aquí.
manera fiable
Usted no tiene más remedio que bajar manualmente para cada nivel de su sub-directorio. No hay riesgo de incluir archivos no deseados, ya que rsync no incluye los archivos de los directorios incluidos.
1) Crear un archivo de inclusión filtro, por ejemplo "include_filter.txt":
+ /specs/
+ /specs/install/
+ /specs/install/project1/***
- /specs/**
2) Ejecutar:
rsync -avz --delete --include-from=include_filter.txt \
/srv/http/projects/project/ \
[email protected]:~/projects/project
- No olvide la barra de inicio "/ ", de lo contrario, puede coincidir con los subdirectorios llamados" **/specs/install/project1/".
- Al elegir un filtro de tipo de inclusión (--include-from = FILE), los signos de inicio más "+" son en realidad opcionales, ya que esta es la acción predeterminada sin signo. (Puede tener el opuesto "-" por defecto con --exclude-from = FILE.)
- Las estrellas dobles "**" significa "cualquier camino"
- Los triples estrellas "***" significa "cualquier ruta, incluyendo este mismo directorio"
manera fácil
Puede iniciar sus filtros "* /", permitiendo que rsync descienda todos sus subniveles. Esto es conveniente pero:
- Se incluirán todos los directorios, aunque estén vacíos. Esto se puede arreglar con la opción rysnc -m, pero luego se omitirán todos los directorios vacíos.
1) Crear un archivo de filtro de inclusión, por ejemplo "include_filter.txt":
+ /**/
+ /specs/install/project1/***
- /specs/**
2) ejecutarlo:
rsync -avzm --delete --include-from=include_filter.txt \
/srv/http/projects/project/ \
[email protected]:~/projects/project
cuenta que la opción -m añadido.
Acabo de encontrar una pregunta similar en linuxquestions.org que puede ayudar: http://www.linuxquestions.org/questions/linux-software-2/rsync-include-exclude-problems-636504/ – Chris
Gracias, eso resuelto ¡eso! Rsync realmente tiene una lógica extraña a veces. – user1036651
Duplicados http://stackoverflow.com/questions/7960669/with-rsync-how-do-includes-and-excludes-combine/7961687#7961687 –