Présentation
Rsync est un outil de ligne de commande Linux utile qui synchronise et copie des fichiers et des répertoires. Vous pouvez utiliser l'outil pour synchroniser les données localement entre les répertoires et les lecteurs, ou entre deux machines distantes.
Les commandes rsync de base de Linux synchronisent tout à partir d'un emplacement que vous spécifiez. Dans de nombreux scénarios de sauvegarde, vous souhaiterez peut-être exclure des fichiers, des répertoires ou des types de fichiers spécifiques.
Suivez les exemples de ce guide pour savoir comment exclure des fichiers ou des répertoires avec rsync. Nous énumérerons les cas d'utilisation d'exclusion les plus courants pour couvrir votre utilisation quotidienne de rsync.

Prérequis
- Utilisateur avec sudo ouracine privilèges
- Accès à une ligne de commande/fenêtre de terminal
- Rsync installé sur votre système
Comment fonctionne l'option d'exclusion de rsync
Le --exclude
option avec rsync
La commande utilise des chemins relatifs vers le répertoire source. Ajoutez le --exclude
option à rsync
commande, suivi du chemin relatif vers un répertoire ou un ou plusieurs fichiers.
La syntaxe de base pour l'option d'exclusion de rsync ressemble à ceci :
rsync [OPTIONS] --exclude 'file_or_directory' source/ destination/
Remplacez source/ avec le nom du répertoire que vous souhaitez utiliser comme source pour le transfert de données vers un autre emplacement.
Remplacer destination/ avec le nom de répertoire que rsync utilisera comme emplacement cible pour vos données. Si le répertoire n'existe pas, rsync en crée un pour vous et transfère les fichiers dans ce répertoire.
Pour sauvegarder des fichiers vers un emplacement distant, suivez notre autre guide pour savoir comment copier ou transférer des fichiers avec rsync sur SSH.
Exclure un fichier spécifique
Dans les exemples d'exclusion rsync ci-dessous, nous utiliserons le -a
(archiver ) et -v
(verbeux ) options (-av
). Le -a
L'option synchronise les répertoires de manière récursive tout en conservant les autorisations, les liens symboliques, la propriété et les paramètres de groupe. Le -v
flag est facultatif et imprime la progression et l'état de la commande rsync.
Pour exclure un fichier lors du transfert du contenu d'un dossier avec rsync, spécifiez le fichier et le chemin relatif.
Par exemple :
rsync -av --exclude 'testfile1.txt' sourcedir/ destinationdir/
Cette commande vous permet de copier les fichiers dans destinationdir de repsource mais exclure testfile1.txt.

Comme vous pouvez le voir dans la sortie, testfile1.txt n'est pas sur la liste.
Pour ce faire, exécutez cette commande :
sudo rm -rf destinationdir
Exclure un répertoire spécifique
Maintenant que vous savez comment utiliser le rsync --exclude
file, utilisez l'outil de la même manière pour exclure un répertoire.
Spécifiez un répertoire que vous souhaitez exclure (au lieu d'un nom de fichier) :
rsync -av --exclude 'dir1' sourcedir/ destinationdir/

Cette commande a copié le contenu de sourcedir dans répertoiredestination et exclu dir1 , comme indiqué dans la sortie.
Exclure des fichiers ou des répertoires en fonction d'un modèle
Utilisez un astérisque * (caractère générique) lors de la définition d'un nom de fichier ou de répertoire pour exclure tout ce qui correspond au modèle.
Pour exclure les fichiers commençant par tester , exécutez cette commande :
rsync -av --exclude 'test*' sourcedir/ destinationdir/
Chaque fichier et répertoire correspondant à ce modèle sera exclu du transfert.
Vous pouvez également utiliser le caractère générique dans un sujet similaire pour exclure tous les répertoires qui se terminent par un modèle spécifique .
Exécutez cette commande pour exclure tous les répertoires qui se terminent par le numéro 3 :
rsync -av --exclude '*3' sourcedir/ destinationdir/
Vous pouvez utiliser un astérisque avant et après un modèle pour affiner davantage le --exclude
critère.
Exclure un type de fichier spécifique
L'outil rsync vous permet d'exclure certains types de fichiers lors de la synchronisation des données. Utilisez un astérisque * suivi de l'extension du type de fichier que vous souhaitez exclure.
Par exemple, vous souhaiterez peut-être sauvegarder un répertoire contenant de nombreux fichiers .iso fichiers que vous n'avez pas besoin de sauvegarder.
Pour exclure un type de fichier spécifique, dans ce cas .iso , exécutez cette commande :
rsync -av --exclude '*.iso' sourcedir/ destinationdir/

La sortie montre que rsync n'a pas transféré .iso des dossiers. Nous avons ajouté le contenu du répertoire source dans l'image pour comparaison.
Exclure les fichiers par taille
Lors des transferts de fichiers, vous pouvez spécifier la taille minimale ou maximale des fichiers que vous souhaitez exclure. Si votre répertoire source contient de nombreux fichiers volumineux que vous ne souhaitez pas sauvegarder, utilisez le --max-size=size_in_mb_or_gb
option. Remplacez le size_in_mb_or_gb avec la taille désirée.
Par exemple, pour exclure tous les fichiers dont la taille dépasse 500 Mo, exécutez cette commande :
rsync -av --max-size=500m sourcedir/ destinationdir/
D'autre part, pour exclure les fichiers inférieurs à une taille spécifique , utilisez le --min-size=size_in_mb_or_gb
option.
Par exemple, vous souhaitez transférer un répertoire avec des images, mais il existe de nombreux fichiers de vignettes. Si toutes vos images sont supérieures à 1 Mo, vous pouvez exclure tous les fichiers inférieurs à cette taille.
Pour ce faire, exécutez cette commande :
rsync -av --min-size=1m sourcedir/ destinationdir/

Ne pas utiliser le --exclude
option rsync lors de la définition de la taille de fichier minimale ou maximale.
Exclure plusieurs fichiers ou répertoires
Ajouter plusieurs --exclude
options pour exclure plusieurs fichiers ou répertoires. Vous pouvez combiner n'importe quel rsync --exclude
dossier et rsync --exclude
fichier(s) commandes pour ne transférer que les données dont vous avez besoin. Toutes les commandes dont nous avons parlé précédemment peuvent être utilisées sur une seule ligne.
La commande suivante exclura tous les fichiers avec le .txt extension, ainsi que le dir3 et dir4 répertoires :
rsync -av --exclude '*.txt' --exclude 'dir3' --exclude 'dir4' sourcedir/ destinationdir/
Vous pouvez ajouter autant de --exclude
entrées selon vos besoins. Pour garder la commande bien rangée, vous pouvez spécifier des fichiers et des répertoires dans le --exclude
option à l'aide d'accolades. Séparez les motifs par une virgule.
Par exemple, nous pouvons raccourcir la commande ci-dessus de cette manière :
rsync -av --exclude={'*.txt','dir3','dir4'} sourcedir/ destinationdir/

La sortie montre que les fichiers et répertoires répertoriés sont exclus du transfert.
Exclure des fichiers et des répertoires d'une liste
Lorsque vous devez exclure un grand nombre de fichiers et de répertoires différents, vous pouvez utiliser le rsync --exclude-from
drapeau. Pour ce faire, créez un fichier texte avec le nom des fichiers et répertoires que vous souhaitez exclure. Ensuite, passez le nom du fichier au --exlude-from
option.
La commande ressemble à ceci :
rsync -av --exclude-from={'list.txt'} sourcedir/ destinationdir/
L'outil rsync ignore tous les fichiers et répertoires que vous listez dans le fichier. Vous pouvez ajouter n'importe quel motif que nous avons utilisé dans ce guide.
Le fichier d'exemple que nous avons utilisé dans la commande ci-dessus contient les modèles suivants :
