
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.