GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser rsync pour exclure des fichiers et des répertoires dans le transfert de données

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 :


Linux
  1. Comment transférer des fichiers entre deux ordinateurs à l'aide des commandes nc et pv

  2. Comment utiliser Netcat pour transférer des fichiers sous Linux

  3. Comment transférer des fichiers sous Linux avec SCP et Rsync

  4. Comment utiliser FTP sous Linux pour transférer des fichiers

  5. Comment puis-je exclure des fichiers par défaut avec rsync ?

Comment utiliser la commande cp pour copier des fichiers et des répertoires

Comment utiliser la commande SCP pour transférer des fichiers

Comment synchroniser des fichiers et des répertoires à l'aide de Zaloha.sh

Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux

Comment utiliser la commande rsync pour copier des données localement et via SSH

Comment installer et utiliser Okteta pour les fichiers de données RAW sous Linux