229 votes

Comment exclure plusieurs répertoires avec rsync?

Je suis en train de sauvegarder mon répertoire personnel en utilisant rsync, et je veux exclure certains des répertoires qui contiennent des fichiers inutiles. Je veux spécifiquement exclure /home/ben/.ccache et /home/ben/build. Malheureusement, la documentation pour rsync était une surcharge d'informations et ne répondait pas à ma question. Voici ce que j'ai essayé:

rsync -arv --exclude "/home/ben/.ccache:/home/ben/build" /home/ben /media/ben/thumbdrive/

Quelle est la bonne façon de faire cela?

298voto

Freedom_Ben Points 8352

D'accord, je me sens vraiment idiot. Avant même de poster cette question, mon ami m'a montré comment le faire et c'est vraiment simple. Pour exclure plusieurs répertoires, il suffit d'utiliser plusieurs commutateurs --exclude=chemin. Ainsi, ma commande ci-dessus correctement écrite est la suivante :

rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/

Remarque : Utilisez des chemins relatifs avec l'exclusion. Les chemins sont relatifs au répertoire source, ici /home/ben.

138voto

Tonester Points 98

Lorsque vous avez plusieurs répertoires et/ou fichiers à exclure, créez un fichier texte et utilisez l'interrupteur --exclude-from. Créez un fichier appelé exclude_me.txt et listez vos exclusions dedans. Exemple (/home/ben/exclude_me.txt):

.ccache
build
.java
.gvfs
.xsession-errors

Ensuite, votre rsync ressemblerait à ceci:

rsync -arv --exclude-from='/home/ben/exclude_me.txt' /home/ben /media/ben/thumbdrive/

Voici quelques informations sur les règles de filtre qui peuvent vous aider:

  • /dir/ signifie exclure le dossier racine /dir
  • /dir/* signifie obtenir le dossier racine /dir mais pas le contenu
  • dir/ signifie exclure tout dossier n'importe où dont le nom contient dir/
  • Exemples exclus: /dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd/cf signifie sauter les fichiers qui commencent par cf dans n'importe quel dossier dans /var/spool/lpd

Voir également la section des règles de filtrage dans la page de manuel.

109voto

György Ráth Points 1091

Vous pouvez également exclure plusieurs chemins en utilisant des crochets :

rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X