rsync: ¿Cómo excluir archivos de puntos solo en el directorio superior?

8

Al realizar copias de seguridad en Bash con rsync, estoy tratando de excluir todos los archivos de puntos y directorios ocultos en el directorio superior, pero no aquellos en directorios de otra manera dirigidos. Por ejemplo:

/copyme.c  
/.dontcopythisfile  
/.dontcopythisdirectory/or_its_contents  
/directory/.butcopymetoo

rsync -a --include=".includeme" --exclude=".*" . DESTno puede copiar los archivos de puntos deseados en subdirectorios, pero --exclude="./.*"también fallan variaciones como las siguientes .

Sugerencias? ¿Requiere esto una regla de filtro en lugar de la más simple --exclude?


fuente

Respuestas:

12

Debe usar el ancla, y en rsync el carácter del ancla es '/'.

Entonces, en su cadena debe estar:

rsync -a --include="/.includeme" --exclude="/.*" ./ DEST
Alexander Pogrebnyak
fuente
0

Por lo general, prefiero crear archivos .rsync-filter que contienen los patrones:

- /.*

De esa manera,

rsync -hxDPavilyzHFF --stats --delete ./ remote:/backup/

es el comando de respaldo ideal. El filtrado se realiza mediante las banderas -FF.

Tenga en cuenta que con este método, puede tener varios archivos .rsync-filter en varios subdirectorios, que se aplican a sus respectivos subárboles. También puede anular exclusiones en subdirectorios, utilizando este método.

sehe
fuente