Comment exclure rsync exclut de supprimer?

31

J'utilise rsync pour synchroniser des fichiers sur plusieurs machines, en utilisant les éléments suivants:

rsync -az -e "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" \
  --delete --delete-excluded --force --exclude=.git  --exclude=.bundle \
  --exclude=tmp --exclude=log/* --exclude=*.log --exclude=*.pid \
  user@host:/path/to/src/ /var/build/dest

Je souhaite exclure tous les fichiers journaux du transfert de la source vers la destination, et supprimer tous les fichiers existants sur la destination. Donc , j'utilise --exclude=*.logavec --delete-excludedqui fonctionne très bien.

Mais je veux garder un certain fichier journal intact sur la destination. Je veux une --exclude-from-deleteoption.

Est-ce possible avec rsync?

Rob
la source

Réponses:

47

Le filtre "protéger" devrait accomplir exactement ce que vous voulez:

          protect, P specifies a pattern for protecting files from deletion.

Spécifiez simplement le filtre suivant avant que les exclusions pertinentes:

--filter='P my-specific-logfile.log'

(Remarquez l'espace après la lettre P.)

koniiiik
la source
2
Cela fonctionne réellement.
Fish Monitor