Comment maîtriser la commande rsync sous Linux

Comme son nom l’indique, rsync est un outil de synchronisation. La première fois que vous l’utilisez, il copie simplement des fichiers et des répertoires d’un emplacement à un autre. Cependant, lors des utilisations suivantes, il synchronise uniquement les différences entre ces emplacements. Donc, si vous ajoutez un fichier au répertoire source, rsync ne copiera que le nouveau fichier vers la destination. Cela permet de gagner beaucoup de temps et de bande passante, surtout lors de la copie vers un emplacement distant.
Imaginez que vous devez synchroniser 50 Go de données sur un serveur distant. Vous pouvez programmer rsync pour qu’il s’exécute quotidiennement. Au lieu de devoir copier tout le 50 Go encore et encore, l’utilitaire enverra uniquement les différences. Cela peut signifier qu’il n’aura à télécharger que quelques mégaoctets de données chaque jour, au lieu de gigaoctets.
Dans l’image ci-dessus, vous pouvez voir que lors de la première utilisation, 104 Mo ont été transférés, tandis que lors de la deuxième utilisation, seuls 31 Ko étaient nécessaires.
Lisez aussi : Utiliser Rclone pour synchroniser avec plusieurs fournisseurs de stockage cloud sous Linux
Comment installer rsync sur diverses distributions Linux
Sur Debian et les distributions basées sur Debian, comme Ubuntu, vous pouvez installer rsync avec :
sudo apt install rsync
Sur Fedora, installez avec :
dnf install rsyncEt sur les distributions dérivées de RedHat (par exemple, CentOS) :
yum install rsyncPour installer rsync sur Arch Linux, utilisez la commande :
pacman -S rsyncSur openSUSE, utilisez :
zypper install rsyncS’il n’est pas inclus dans vos dépôts par défaut, consultez la page d’installation rsync d’openSUSE.
Comment utiliser rsync pour synchroniser des fichiers ou des répertoires locaux
La syntaxe générale de rsync est : rsync [options] /path/to/source /path/to/destination.
[options] représente les options de ligne de commande que vous pouvez trouver dans le manuel :
man rsync
Appuyez sur q pour quitter le manuel.
Pour copier un fichier :
rsync /bin/ls .La commande ci-dessus est équivalente à rsync /bin/ls /home/votre_nom_utilisateur. Cela copie la commande “ls” dans le répertoire dans lequel vous vous trouvez actuellement. Par défaut, cela devrait être /home/votre_nom_utilisateur. Le point . représente le répertoire courant. Les chemins peuvent être absolus (/home/votre_nom_utilisateur/Téléchargements/chrome.zip) ou relatifs à votre répertoire courant (Téléchargements/chrome.zip).
Lorsque vous traitez de très gros fichiers, vous pouvez utiliser cette commande :
rsync -P /path/to/file /path/to/destinationCela affichera la progression et vous permettra de reprendre un transfert interrompu. En cas de besoin de reprendre, utilisez :
rsync -P --append /path/to/file /path/to/destinationSans --append, le transfert commencerait depuis le début.
Pour synchroniser des répertoires :
rsync -av /path/to/source /path/to/destinationExemple de commande :
rsync -av /bin .Effet du slash final dans rsync (Important)
Dans la commande précédente, notez que le chemin vers le répertoire source ne contient pas de slash final / (/bin vs /bin/). Sans slash final, rsync copie le répertoire lui-même. Ainsi, rsync -av /bin . donne le résultat illustré dans l’image suivante.

Lorsqu’un slash final est utilisé, rsync copie le contenu de ce répertoire. Dans ce cas, chaque fichier dans /bin serait dispersé dans le répertoire de destination. Ainsi, rsync -av /bin/ . donnerait le résultat illustré dans l’image suivante.

Il est très important de se souvenir de cette différence, car en utilisant TAB pour compléter les noms de répertoire, cela ajoute automatiquement un slash final à la fin. Gardez cela à l’esprit pour éviter de créer le désordre dans le répertoire de destination.
Comment utiliser rsync pour synchroniser avec des emplacements distants (par exemple, des serveurs)
Ce qui a été décrit dans la section précédente est vrai lors du travail avec des emplacements distants. La seule différence est que vous devez ajouter le nom d’utilisateur de connexion et l’adresse de l’emplacement distant. Pour envoyer votre répertoire /bin vers un ordinateur distant, utilisez :
rsync -av /bin [email protected]:/home/votre_nom_utilisateurrsync se connecte via OpenSSH. Cela signifie que vous devez configurer le serveur OpenSSH et les identifiants de connexion sur la destination distante au préalable. Notez que votre_nom_utilisateur fait référence au nom d’utilisateur créé sur le serveur. Cela peut être différent du nom d’utilisateur que vous avez sur votre machine locale.
Si vous possédez un nom de domaine et que vous le pointez vers l’adresse IP de votre serveur, vous pouvez utiliser le domaine dans la commande :
rsync -av /bin [email protected]:/home/votre_nom_utilisateurPour les gros transferts, il est utile de compresser également les données avant de les envoyer en ajoutant le paramètre -z :
rsync -avz /bin [email protected]:/home/votre_nom_utilisateurVous pouvez omettre le paramètre de compression lorsque vous envoyez des fichiers qui sont déjà compressés (fichiers audio comme MP3, vidéos, images JPEG). Ils ne peuvent pas être comprimés davantage, donc vous perdrez en fait du temps en utilisant -z sur ceux-ci.
Pour copier des fichiers de la destination distante vers votre ordinateur local, il suffit d’inverser les emplacements :
rsync -avz [email protected]:/bin /home/votre_nom_utilisateurConclusion
Cela couvre les commandes rsync les plus importantes que vous devez connaître. Si jamais vous avez besoin de plus de contrôle sur la synchronisation des répertoires, consultez le manuel rsync en ligne et faites défiler quelques pages jusqu’à ce que vous trouviez “Résumé des options.”