Comment exclure un dossier de rsync

52

J'essaie de sauvegarder mon dossier personnel sur mon lecteur NAS. Je donne ceci:

rsync -Paz --exclude-from 'rsync-exclude.txt' /home/chris/ [email protected]:LinuxHome

rsync-exclude.txt a ce contenu:

/home/chris/Downloads/*
/home/chris/Downloads/
/home/chris/Downloads/*.*

et c'est dans le même dossier que j'exécute rsync (dossier de base).

Cependant, rsync essaie également de copier ce dossier.

Qu'est-ce que je fais mal?

    
posée xpanta 24.09.2013 - 21:03
la source

1 réponse

80

Le problème est que vous spécifiez des chemins de répertoire complets.

Avec rsync, tous les chemins d’exclusion (ou d’inclusion) commençant par / sont ancrés à la racine du transfert . La racine du transfert dans ce cas est /home/chris . Si vous avez fait:

rsync -Paz --exclude-from 'rsync-exclude.txt' / [email protected]:

... alors vos exclusions devraient fonctionner.

Mais comme vous essayez juste de synchroniser votre répertoire personnel, et qu’il n’ya pas de sous-répertoire de /home/chris nommé home/chris/Downloads , il ignore votre exclusion.

Essayez de supprimer les parties /home/chris de votre fichier rsync-exclude.txt .

En fait, vous ne devriez avoir besoin que d’une seule ligne dans le fichier:

/Downloads

REMARQUE : si vous ne spécifiez pas le / de tête et que vous avez un répertoire appelé /home/chris/special-stuff/Downloads , cela sera également exclu. Je suppose que vous voulez seulement exclure votre "top-level" (relatif au répertoire source, alias le répertoire "root of transfer") Downloads , vous voulez donc le / .

Incidemment, si vous aviez (seulement) la ligne /Downloads/* dans votre fichier, cela garantirait qu'un répertoire Downloads existe sur la cible, mais ne copierait aucun de ses contenus!

En fait, si vous n’avez besoin que d’exclure un répertoire, il semblerait plus simple de le faire (pas de fichier d’exclusion du tout):

rsync -Paz --exclude /Downloads /home/chris/ [email protected]:LinuxHome

Je vois que vous avez bien compris, mais les nouveaux utilisateurs de rsync doivent noter la barre oblique à la fin de /home/chris/ . Pour citer la page de manuel rsync , "Vous pouvez penser à une fin / sur une source comme signifiant" copier le contenu de ce répertoire "plutôt que" copier le répertoire par son nom "." Donc, si vous laissiez cette barre oblique, vous obtiendriez un répertoire appelé chris dans le répertoire cible, contenant tout depuis /home/chris (à l'exception du répertoire Downloads d'origine, bien sûr).

    
réponse donnée Lambart 24.09.2013 - 21:31
la source

Lire d'autres questions sur les étiquettes