Comment exclure plusieurs répertoires avec rsync?

134

J'essaie de sauvegarder mon répertoire personnel à l'aide de rsync, et je souhaite exclure certains des répertoires contenant des données indésirables. Je veux exclure spécifiquement /home/ben/.ccache et /home/ben/build . Malheureusement, la documentation de rsync était une surcharge d'informations et n'a pas répondu à ma question. C'est 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 procéder?

    
posée Freedom_Ben 16.07.2013 - 01:53
la source

3 réponses

174

OK je me sens vraiment bête. Avant même que je poste cette question, mon ami m'a montré comment le faire et c'est très simple. Pour exclure plusieurs répertoires, il vous suffit d'utiliser plusieurs commutateurs --exclude=path . Donc ma commande ci-dessus correctement écrite est la suivante:

rsync -arv --exclude=.ccache --exclude=build /home/ben /media/ben/thumbdrive/
    
réponse donnée Freedom_Ben 16.07.2013 - 01:53
la source
82

Lorsque vous devez exclure plusieurs répertoires et / ou fichiers, créez un fichier texte et utilisez le commutateur --exclude-from . Créez un fichier appelé exclude_me.txt et listez vos exclusions. Exemple ( /home/ben/exclude_me.txt ):

.ccache
build
.java
.gvfs
.xsession-errors

Alors votre rsync ressemblerait à quelque chose comme:

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

Voici quelques informations sur les règles de filtrage 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 tous les dossiers où le nom contient dir/

  • Exemples exclus: /dir/, /usr/share/directory/, /var/spool/dir/ /var/spool/lpd/cf signifie ignorer les fichiers qui commencent par cf dans un dossier dans /var/spool/lpd

Consultez également la section règles de filtrage de la page de manuel.

    
réponse donnée user228759 19.05.2014 - 17:13
la source
57

Vous pouvez également exclure plusieurs chemins entre accolades:

rsync -arv --exclude={.ccache,build} /home/ben /media/ben/thumbdrive/
    
réponse donnée György Ráth 18.09.2014 - 10:59
la source

Lire d'autres questions sur les étiquettes