Cómo incluir archivos que están excluidos en un rsync

16

Estoy tratando de configurar un rsync que excluya todos los .*archivos excepto, .htaccesspero desafortunadamente, esto no funciona:

rsync -avP --exclude=".*" --include="./.htaccess" ./. user@server:/dir

¿Es posible excluir de alguna manera las reglas generales de exclusión?

Rico
fuente

Respuestas:

24

Se aplica la primera regla de coincidencia, por lo tanto, incluya .htaccessantes de excluir .*.

rsync -avP --include=".htaccess" --exclude=".*" . user@server:/dir

Esto copia .htaccessen todos los niveles. No sé con qué pretendías ./.htaccess; si desea hacer coincidir un archivo solo en la raíz de la copia, inicie el patrón con a /. Si solo desea la raíz .htaccess, no puede simplemente usarla --include='/.htaccess' --exclude='.*', porque la regla no enraizada realmente tiene prioridad aquí, debe hacer algo más complicado:

rsync -avP --exclude='/*/**/.htaccess' --include='.htaccess' --exclude=".*" . user@server:/dir

Lecturas adicionales: principios básicos para filtros rsync .

Gilles 'SO- deja de ser malvado'
fuente
@ fred.bear: Ese fue un error tipográfico genuino y desagradable. ¡Gracias por verlo!
Gilles 'SO- deja de ser malvado'
Gracias, había intentado poner el --includeprimero, pero el "./" frente al "./.htaccess" era lo que lo estaba matando.
Rico
1
@Rich tenga en cuenta que si hay directorios ocultos que contienen un .htaccessarchivo, tendrá que --include='.*/'(creo) antes de la final --exclude, vea también aquí
Tobias Kienzler