10 exemples utiles de la commande Linux rsync

Publié: 2022-10-28
Ordinateur portable Linux affichant une invite bash
fatmawati achmad zaenuri/Shutterstock.com

La commande Linux rsync est un puissant outil de copie de fichiers et de synchronisation de dossiers. Voici dix cas d'utilisation courants que vous pourrez mettre à profit sur vos propres systèmes.

Table des matières

L'outil rsync

L'outil rsync copie des fichiers et des répertoires entre deux ordinateurs. Il utilise un algorithme sophistiqué qui analyse les arborescences de répertoires pour trouver des fichiers sur l'ordinateur source qui n'existent pas sur l'ordinateur de destination. Ces fichiers sont transmis à l'ordinateur de destination. Ce qui rend rync si intelligent, c'est qu'il peut déterminer quels morceaux de fichiers existants ont été modifiés, et il n'envoie que les parties modifiées .

Vous pouvez utiliser rsync pour copier des fichiers vers un autre emplacement de votre disque dur, vers un autre disque dur du même ordinateur, vers un lecteur USB connecté en externe ou vers tout autre emplacement accessible par le réseau.

Comment sauvegarder votre système Linux avec rsync
CONNEXION Comment sauvegarder votre système Linux avec rsync

En plus de cela, rsync peut éventuellement conserver des liens symboliques, des liens physiques et des métadonnées de fichiers telles que la propriété des fichiers, les autorisations et les temps d'accès. Pour prendre en charge toutes ces fonctionnalités, rsync propose de nombreuses options et les comprendre toutes prend du temps. Nous avons rassemblé ces 10 exemples pour vous aider à démarrer. Nous avons déjà écrit sur les sauvegardes avec rsync , nous nous concentrons donc ici sur d'autres utilisations.

Pour toutes ses nombreuses options, la structure d'une commande rsync est simple. Nous devons fournir la source, la destination et les options que nous voulons utiliser. Vous constaterez probablement que rsync est déjà installé sur votre ordinateur Linux - c'était le cas sur toutes nos machines de test - mais si ce n'est pas le cas, il se trouvera certainement dans les référentiels de votre distribution.

1. Copiez les fichiers dans un autre répertoire

Voici un exemple simple pour nous lancer. Nous allons copier les fichiers du répertoire « project-files » vers le répertoire « Documents ». Nous utilisons deux options, l'option -a (archive) et l'option -v (verbose). L'option verbose indique à rsync d'expliquer ce qu'il fait pendant qu'il le fait. L'option archive préserve la propriété du fichier et certains autres éléments que nous examinerons sous peu.

Le format de la commande est options source-location destination-location .

 rsync -av /home/dave/project-files/ /home/dave/Documents/ 

Copier des fichiers dans un répertoire différent sur le même ordinateur avec rsync

L'utilisation de ls sur le dossier "Documents" indique que les fichiers ont été copiés.

Lister les fichiers dans le répertoire documents

Pendant que rsync fonctionne, les fichiers sont répertoriés au fur et à mesure qu'ils sont copiés. On nous dit :

  • Le nombre d'octets qui sont envoyés.
  • Le nombre d'octets reçus. Avant que le transfert de fichiers n'ait lieu, rsync doit déterminer quels fichiers doivent être transférés. Pour ce faire, certaines informations sur les fichiers de la destination doivent être récupérées par rsync . Ces informations sont contenues dans les octets reçus.
  • La rapidité du transfert.
  • La taille totale des fichiers copiés.
  • L'"accélération". Il s'agit du rapport de la taille totale divisée par la somme des octets envoyés et reçus. Plus ce nombre est élevé, plus le transfert est efficace.

Nous avons modifié le fichier texte dans le répertoire source et répété la commande rsync .

 rsync -av /home/dave/project-files/ /home/dave/Documents/ 

Copier des fichiers dans un répertoire différent sur le même ordinateur avec rsync

Cette fois, le seul fichier qui doit être mis à jour est le fichier texte que nous avons modifié. Le chiffre d'accélération est maintenant de 30 850. C'est à quel point il est plus efficace de copier la partie modifiée de ce fichier unique que de copier tous les fichiers.

L'option -a (archive) représente en fait une collection d'autres options. C'est la même chose que d'utiliser toutes ces options :

  • r : Travaillez de manière récursive dans les arborescences de répertoires du répertoire source et copiez-les dans le répertoire de destination, en les créant s'ils n'y existent pas déjà.
  • l : copie les liens symboliques en tant que liens symboliques.
  • p : Conserver les autorisations de fichiers.
  • t : Préserve les heures de modification des fichiers.
  • g : Conserver les permissions du groupe.
  • o : Conserver la propriété du fichier.
  • D : Copier les fichiers spéciaux et les fichiers de périphérique. Les fichiers spéciaux peuvent être des éléments centrés sur la communication qui sont traités comme des fichiers, tels que des sockets et des canaux premier entré, premier sorti (fifos). Les fichiers de périphérique sont des fichiers spéciaux qui permettent d'accéder aux périphériques et aux pseudo-périphériques.

C'est une combinaison si fréquemment utilisée que rsync fournit l'option -a (archive) comme raccourci pour les invoquer toutes.

2. Copier un répertoire dans un autre répertoire

Si vous regardez la commande rsync précédente, vous verrez une barre oblique "/" sur le chemin du fichier du répertoire source. C'est important. Il indique à rsync de copier le contenu du répertoire. Si vous ne fournissez pas la barre oblique finale, rsync copiera le répertoire et son contenu.

 rsync -av /home/dave/project-files /home/dave/Documents/ 

Copier le répertoire et son contenu dans un répertoire différent sur le même ordinateur avec rsync

Cette fois, le nom du répertoire est ajouté au nom du fichier tel qu'il est répertorié. Si nous regardons dans le répertoire de destination, nous verrons que le dossier source a été copié avec les fichiers qu'il contient.

 ls Documents/
 ls Documents/fichiers-projet/ 

Liste des fichiers copiés dans le répertoire transféré

3. Copier un répertoire sur un autre lecteur

La copie de fichiers vers un autre emplacement sur le même disque dur ne vous protège pas contre une panne de disque. Si ce lecteur rend l'âme, vous avez perdu les copies source et destination de ces fichiers. Les copier sur un autre disque dur est un moyen beaucoup plus robuste de protéger vos données. Tout ce que nous avons à faire est de fournir le chemin correct vers le lecteur de destination.

 rsync -av /home/dave/project-files /run/mount/drive2 

Copier des fichiers sur un autre disque dur du même ordinateur

Regarder l'autre disque dur nous montre le répertoire et les fichiers qui y ont été copiés.

 ls run/mount/drive2/project-files/ 

Liste des fichiers qui ont été copiés sur un autre disque dur du même ordinateur

CONNEXION: Que faire lorsque votre disque dur tombe en panne

4. Faire d'abord un essai à sec

Avant de voir comment rsync peut supprimer des fichiers de manière utile pour nous, voyons comment nous pouvons faire en sorte que rsync effectue un essai à blanc.

Lors d'un essai à vide, rsync effectue les actions que nous avons demandées, mais ne les fait pas réellement. Il rend compte de ce qui se serait passé si la commande avait été exécutée. De cette façon, nous pouvons nous assurer que la commande fait exactement ce que nous attendons.

Pour forcer une simulation, nous utilisons l'option --dry-run .

 rsync -av --dry-run /home/dave/geocoder /run/mount/drive2 

Exécution d'une simulation d'une commande rsync

Les fichiers qui auraient été copiés sont répertoriés pour nous, et nous obtenons les statistiques habituelles, suivies du message (DRY RUN) afin que nous sachions que rien ne s'est réellement passé.

5. Suppression de fichiers dans le répertoire de destination

L'option --delete indique à rsync de supprimer les fichiers et répertoires du répertoire de destination qui ne se trouvent pas dans le répertoire source. Cela signifie que le répertoire de destination sera une copie exacte du répertoire source. Nous serons prudents et utiliserons d'abord l'option --dry-run .

 rsync -av --delete --dry-run /home/dave/geocoder /run/mount/drive2 

Exécution d'un essai à blanc d'une commande rsync qui pourrait supprimer des fichiers

Nous sommes informés que deux fichiers seront supprimés. Si nous sommes sûrs que nous ne nous soucions pas qu'ils soient supprimés, nous pouvons supprimer l'option --dry-run et exécuter la commande pour de vrai.

 rsync -av --delete /home/dave/geocoder /run/mount/drive2 

Copier et supprimer des fichiers du répertoire de destination qui ne se trouvent pas dans le répertoire source

Cette fois, le contenu des répertoires est synchronisé et les deux fichiers supplémentaires sont supprimés.

6. Suppression des fichiers sources

Vous pouvez choisir de supprimer les fichiers source après un transfert réussi , ce qui fait que rsync fonctionne plus comme un déplacement que comme une copie. Si le transfert a échoué, les fichiers source ne sont pas supprimés. L'option que nous devons utiliser est --remove-source-files .

 rsync -av --remove-source-files /home/dave/geocoder /run/mount/drive2 

Forcer rsync à supprimer les fichiers source après un transfert réussi

Notez que les fichiers peuvent être supprimés même si aucun fichier n'est transféré. En effet, si rsync vérifie et que tous les fichiers sont déjà dans le répertoire de destination et que rsync n'a rien à faire, rsync considère qu'il s'agit d'un transfert réussi.

De plus, rsync supprime uniquement les fichiers du répertoire source. Il ne supprime pas le répertoire source ni aucun sous-répertoire, juste les fichiers qu'ils contiennent. Nous pouvons le voir en utilisant l'option -R (récursive) avec ls , sur le répertoire source.

 ls -R géocodeur 

Une arborescence de répertoires vide après que rsync a supprimé les fichiers source

7. Copier des fichiers sur un ordinateur distant

Pour synchroniser des dossiers avec un ordinateur distant, rsync doit être installé sur les deux ordinateurs. Configurez la communication SSH entre les deux ordinateurs avant d'essayer d'utiliser rsync sur l'ordinateur distant.

Comment créer et installer des clés SSH à partir du shell Linux
CONNEXION Comment créer et installer des clés SSH à partir du shell Linux

Vous devez pouvoir vous connecter à distance en tant qu'utilisateur régulier sur l'ordinateur distant pour que rsync fonctionne. Peu importe que vous utilisiez un identifiant et un mot de passe pour vous connecter, ou que vous ayez configuré des clés SSH pour un accès sécurisé sans mot de passe, mais si vous ne pouvez pas vous connecter en tant qu'utilisateur, alors rsync ne fonctionnera pas Soit.

Si vous vous connectez avec un mot de passe, rsync vous demandera le mot de passe. Si vous utilisez des clés SSH pour vous connecter, le processus est transparent.

La seule chose supplémentaire que vous devez faire est d'ajouter le nom du compte d'utilisateur et l'adresse IP de l'ordinateur distant au début du chemin du fichier de destination. Utilisez un arobase « @ » pour séparer le nom d'utilisateur du nom de l'ordinateur ou de l'adresse IP, et deux-points « : » pour séparer le nom de l'ordinateur ou l'adresse IP du chemin du répertoire.

Sur notre réseau de test, ces deux commandes sont équivalentes.

 rsync -av /home/dave/geocoder [email protected]:/home/dave/Téléchargements
 rsync -av /home/dave/geocoder [email protected]:/home/dave/Téléchargements 

Copier des fichiers sur un ordinateur distant via SSH avec rsync

Nous recevons les mêmes informations que lorsque nous copions des fichiers localement.

8. Inclure ou exclure des fichiers ou des répertoires

Vous pouvez avoir des fichiers et des répertoires dans le répertoire source que vous ne souhaitez pas copier sur l'ordinateur de destination. Vous pouvez les exclure en utilisant l'option --exclude . De la même manière, vous pouvez choisir d'inclure des fichiers et des répertoires spécifiques avec l'option --include .

La bizarrerie est que si vous utilisez l'option --include seule, tous les fichiers sont copiés, comme d'habitude, y compris vos fichiers spécifiquement inclus. Pour ne copier que vos fichiers inclus, vous devez --exclude tout le reste.

Vous pouvez utiliser autant d'options --include et --exclude dans votre commande que vous le souhaitez, mais assurez-vous de placer vos options --include avant vos options --exclude . Assurez-vous également d'avoir une barre oblique avant sur le chemin de votre fichier source.

Cette commande copie uniquement les fichiers de code source C et les fichiers de données CSV sur l'ordinateur de destination.

 rsync -av --include="*.c" --include="*.csv" --exclude="*" /home/dave/geocoder/ /run/mount/drive2/geocoder

Utilisation de rsync pour copier les fichiers sélectionnés sur un autre disque dur sur le même ordinateur

Les seuls fichiers copiés sont ceux que nous avons spécifiquement inclus.

9. Compresser les fichiers dans le transfert

L'option -z (compresser) oblige rsync à compresser les fichiers transférés. Cependant, ils ne sont pas stockés sous forme de fichiers compressés sur l'ordinateur de destination, ils ne sont compressés que pendant le transfert lui-même. Cela peut accélérer les longs transferts.

 rsync -avz /home/dave/geocoder /run/mount/drive2 

Compresser les fichiers lors de leur transfert avec l'option -z rsync

10. Suivi des progrès

En parlant de transferts longs, nous pouvons ajouter quelques statistiques afin que nous puissions voir la progression du transfert.

L'option -P (partial, progress) ajoute en fait deux options, --partial et --progress . L'option --partial indique à rsync de conserver les fichiers partiellement transférés si un transfert échoue. Cela permet de gagner du temps lors du redémarrage du transfert.

L'option --progress imprime, pour chaque fichier, les données transférées en octets et en pourcentage, la vitesse du transfert, le temps pris, le numéro du fichier en cours de transfert et le nombre de fichiers restants.

 rsync -aP /home/dave/geocoder /run/mount/drive2 

Utilisation de l'option -P pour fournir des statistiques sur la transmission de chaque fichier

La sortie défile assez rapidement et est difficile à lire. Vous pouvez légèrement améliorer les choses en supprimant l'option -v (verbeux) de la commande. Même alors, il est toujours difficile à lire car il passe à toute allure.

Statistiques de transfert pour chaque fichier transféré

Il est souvent plus utile de suivre l'avancement du transfert global. Vous pouvez le faire avec l'option –info et en lui passant « progress2 » comme paramètre.

 sync -a --info=progress2 /home/dave/geocoder /run/mount/drive2 

Statistiques pour le transfert rsync global

Cela donne un rapport d'avancement qui est réellement utile.

Comme cp sur les stéroïdes

La commande rsync est rapide, flexible et vaut bien le temps qu'il faut pour se familiariser avec elle. La forme de base d'une commande rsync avec les options -av , le répertoire source et le répertoire de destination n'est pas du tout difficile à retenir.

Pour de nombreux cas d'utilisation, c'est tout ce dont vous avez besoin. Soyez à l'aise avec cela et le reste viendra facilement.

CONNEXION: Le guide du non-débutant pour la synchronisation des données avec Rsync