Exclure des fichiers : Rsync

Exclure des fichiers : Rsync

Table des matières

Voici quelques exemples d’utilisation de rsync pour exclure ce que vous souhaitez exclure, ni plus ni moins. À titre de démonstration, quelques appels rsync suivent, qui copient des parties d’un exemple de répertoire source src dans un répertoire cible dst.

Le répertoire source ressemble à ceci :

src:
├── dir1
│   └── dir11
│       ├── file1
│       └── file2
├── dir2
│   ├── dir1
│   └── dir21
├── file1
└── file2

Les vues de répertoire dans ce post ont été créées avec l’outil de ligne de commande tree

Exclure le dossier

La commande rsync -a --exclude '/dir1' src/dst produit ce qui suit dans le répertoire cible :

dst:
├── dir2
│ ├── dir1
│ └── dir21
├── file1
└── file2

dir1 dans le répertoire de travail a été omis. /dir2/dir1 est toujours là. Ergo : Le / au début de /dir1 signifie que le répertoire courant est supposé.

!!!!! rsync démarre toujours à partir du répertoire de travail actuel. Donc --exclude '/dir1' n’entraîne pas l’ignorance des dossiers ou fichiers nommés dir1 dans les sous-répertoires. De plus, cela ne signifie pas que le répertoire racine / du système est recherché.

L’ajout d’un / au répertoire source src ne fait copier que le contenu du répertoire source, pas le répertoire lui-même. Cela fait donc une différence que vous appeliez rsync -a src dst ou rsync -a src/dst.

Voici le répertoire cible si / est omis :

dst:
├── dir2
│ └── dir21
├── file1
└── file2

Ici, dir1 est absent du répertoire de travail et du sous-répertoire.

Inclure des dossiers, exclure du contenu

Avec --exclude '/dir1/*' les dossiers peuvent être synchronisés, mais leur contenu est exclu :

dst:
├── dir1
├── dir2
│ ├── dir1
│ └── dir21
├── file1
└── file2

Exclure des fichiers/dossiers

Les fichiers, bien sûr, sont exclus des modèles spécifiés avec --exclude, tout comme les dossiers. Exemple : --exclude 'fichier*' exclut les fichiers et dossiers commençant par fichier :

dst:
├── dir1
│ └── dir11
└── dir2
    ├── dir1
    └── dir21

--exclude 'file*/' n’exclurait que les dossiers commençant par la chaîne file.

Exclure plusieurs modèles

Bien sûr --exclude peut aussi être utilisé plusieurs fois : ``rsync -a –exclude ‘/dir1’ –exclude ‘/dir2’ src/ dst`

Exclure beaucoup

Si vous avez beaucoup à exclure, le paramètre --exclude-from 'exclude-list.txt' peut être utilisé. Dans cet exemple, tous les modèles d’exclusion souhaités peuvent être spécifiés sur une ligne distincte dans le fichier exclude-list.txt. Les commentaires peuvent être introduits avec #.

Exemple d’un fichier exclude-list.txt :

/dir1
/dir2/*
file1

Une bonne liste d’exclusion pour les répertoires personnels peut être trouvée ici.

comments powered by Disqus