27Jun

Comment exclure des fichiers de Rsync

Rsync est l'un des utilitaires les plus utiles pour un administrateur de serveur, mais il synchronise par défaut tout , ce qui peut être gênant si votre application crée beaucoup de fichiers temporaires. Voici comment exclure des fichiers lors de l'utilisation de rsync.

Exclusion d'une liste dans un fichier

C'est la méthode idéale pour exclure des fichiers et des dossiers, puisque vous pouvez toujours éditer la liste et modifier les choses si nécessaire. Voici la syntaxe:

rsync --exclude-from = fichier d'exclusion /path/to/ /path/to/ source /path/to/ dest

La chose difficile avec rsync est que vous devez utiliser un chemin relatif lorsque vous essayez d'exclure des choses, parce que quand il essaie decorrespondre aux exclusions, il n'utilisera pas la première partie du chemin pour le match. .. c'est bizarre.

Disons, par exemple, que vous essayez de sauvegarder /data/web/ et de l'envoyer à un autre serveur, donc vous utilisez une commande comme rsync -a /data/web/ utilisateur @ serveur: /backups/data/web/ pour y arriver. .. mais vous voudriez vraiment sauter la synchronisation /data/web/cache/dossier. Lorsque rsync va vérifier votre liste d'exclusion pour chaque élément qu'il synchronise, il ne vérifie pas /data/web/cache/ car votre commande rsync d'origine est basée dans le dossier /data/web/.Il va juste vérifier "cache /" contre la liste. Donc, vous devrez mettre "cache" dans la liste, pas le chemin complet. Exemple:

rsync -a --exclude-from = Exclusions /data/ /data/web/ /backups/

Maintenant, pour exclure le cache /data/web/ et la température /data/web/ de rsync en utilisant cette commande, nous supprimerions la partie /data/web/ du chemin et le fichier d'exclusions /data/ contiendrait simplement ceci:

cache * temp *

Vous remarquerez que j'ai ajouté le * dans le chemin, pour m'assurer qu'il correspond à tout ce qui commence par "cache" au début. Vous pouvez utiliser ce motif en étoile pour des raisons plus utiles si vous le souhaitez. Supposons que vous souhaitiez exclure tous les fichiers. txt de la synchronisation. Vous commencerez le motif avec l'étoile pour vous assurer que cela correspond toujours, et ajoutez ceci:

*. txt

Cela garantirait que ces types de fichiers sont ignorés pendant une synchronisation. C'est plutôt simple au-delà de ça.

Excluant un seul article

Cette technique est beaucoup moins utile, mais vous pouvez l'utiliser à la volée si vous en avez besoin. Si vous configurez un script pour utiliser rsync, ce que vous êtes habituellement, vous devriez prendre la minute supplémentaire à exclure d'une liste de fichiers à la place pour faciliter la maintenance future. La syntaxe est très similaire:

rsync --exclude = relatif /path/to/ exclusion / source / dest

Le même chemin relatif devrait s'appliquer ici comme ci-dessus.