Comment inclure des fichiers exclus dans un rsync

16

J'essaie de mettre en place un rsync qui exclut tous les .*fichiers à l'exception de .htaccessmais malheureusement, cela ne fonctionne pas:

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

Est-il possible d'exclure d'une manière ou d'une autre les règles générales d'exclusion?

Riches
la source

Réponses:

24

La première règle de correspondance s'applique, alors incluez .htaccessavant d'exclure .*.

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

Cela copie .htaccessà tous les niveaux. Je ne sais pas de quoi vous vouliez ./.htaccess; si vous souhaitez faire correspondre un fichier à la racine de la copie uniquement, démarrez le modèle avec a /. Si vous ne voulez que la racine .htaccess, vous ne pouvez pas simplement l'utiliser --include='/.htaccess' --exclude='.*', car la règle non enracinée a en fait la priorité ici, vous devez faire quelque chose de plus compliqué:

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

Pour en savoir plus: principes de base des filtres rsync .

Gilles 'SO- arrête d'être méchant'
la source
@ fred.bear: Celui-là était une véritable faute de frappe, et une méchante. Merci de l'avoir repéré!
Gilles 'SO- arrête d'être méchant'
Merci, j'avais essayé de mettre le --includepremier, mais le "./" devant le "./.htaccess" était ce qui le tuait.
Rich
1
@Rich note que s'il y a des répertoires cachés qui contiennent un .htaccessfichier, vous devrez --include='.*/'(je pense) avant la finale --exclude, voir aussi ici
Tobias Kienzler