Dans un rsync, j'essaie d'exclure des sous-répertoires qui correspondent à un modèle. Mais, je ne peux pas le faire fonctionner. J'ai suivi plusieurs exemples trouvés ici et sur Google. Mais je n'obtiens pas les bons résultats. Voici le bit d'option de ma commande:
-avh --exclude 'branch*' --stats --delete --link-dest=$LNK
Ma structure de répertoire source est
/root
/branch1
/branch2
/branch3
/other
/stillAnother
/etc
Cela fait partie d'un script de sauvegarde. $ LNK est un lien vers la destination rsync de la veille.
Je ne veux pas / root / branch1, / root / branch2, / root / branch3. ou leur contenu à synchroniser. Mais ils sont.
Voici les bits d'exclusion que j'ai déjà essayés:
--exclude=branch*
--exclude='branch*'
--exclude '/branch*'
--exclude /branch*
Merci pour toute aide / conseil.
EDIT - pour résoudre le drapeau "possible en double"
Cette question concerne une liste connue de répertoires. Je dois exclure tous les répertoires qui suivent un modèle, même si ces répertoires n'existent pas encore. c'est à dire de mon exemple, d'autres répertoires nommés /branch*
peuvent être ajoutés. J'ai besoin de rendre mon script évolutif et d'éviter de modifier le script lorsqu'un répertoire correspondant au modèle est ajouté, car ces répertoires peuvent être temporaires.
*branch*
ou/root/branch*
non la forme courtebranch*
- courte n'est pas trouvée et n'est donc pas exclue.--exclude '*branch*
)Réponses:
Vous excluez la règle est correcte. Cependant, rsync ne supprimera pas les fichiers exclus sur la destination sans le paramètre supplémentaire
--delete-excluded
:Exemple:
la source
-avh --exclude 'branch*' --stats --delete --delete-excluded --link-dest=$LNK
sauvegarde de la nuit dernière toujours sauvegardé les répertoires / branch *.rsync version 3.1.3 (peut-être plus tôt, n'a pas été vérifié) exclut correctement les sous-répertoires utilisant cette syntaxe (en remplaçant évidemment
exclude_dirname
par le modèle que vous souhaitez exclure):Cela fonctionne également avec les caractères génériques. La question d'origine utilise
'branch*'
, donc cela fonctionne:J'espère que cela t'aides.
la source