Commande Rsync sous Linux avec exemples

rsync est un utilitaire de ligne de commande rapide et polyvalent pour synchroniser des fichiers et des répertoires entre deux emplacements sur un shell distant, ou de/vers un démon Rsync distant. Il fournit un transfert de fichiers incrémentiel rapide en transférant uniquement les différences entre la source et la destination.

Rsync peut être utilisé pour la mise en miroir des données, les sauvegardes incrémentielles, la copie de fichiers entre systèmes, et comme remplacement des commandes scp, sftp, et cp.

Cet article explique comment utiliser rsync à travers des exemples pratiques et des explications détaillées des options rsync les plus courantes.

Installation de Rsync #

L’utilitaire rsync est préinstallé sur la plupart des distributions Linux et macOS. Si vous n’avez pas rsync installé sur votre système, vous pouvez facilement l’installer en utilisant le gestionnaire de paquets de votre distribution.

Installer Rsync sur Ubuntu et Debian #

sudo apt install rsync

Installer Rsync sur CentOS et Fedora #

sudo yum install rsync

Syntaxe de la commande Rsync #

Avant de voir comment utiliser la commande rsync, commençons par revoir la syntaxe de base.

Les expressions de l’utilitaire rsync prennent la forme suivante :

Local to Local: rsync ... ... DESTLocal to Remote: rsync ... ... HOST:DESTRemote to Local: rsync ... HOST:SRC... 
  • OPTION – Les options rsync.
  • SRC – Répertoire source.
  • DEST – Répertoire de destination.
  • USER – Nom d’utilisateur distant.
  • HOST – Nom d’hôte ou adresse IP distant.

rsync fournit un certain nombre d’options qui contrôlent le comportement de la commande. Les options les plus utilisées sont :

  • -a, --archive, mode archive, équivalent à -rlptgoD. Cette option indique à rsync de synchroniser les répertoires de manière récursive, de transférer les périphériques spéciaux et de bloc, de préserver les liens symboliques, les heures de modification, les groupes, la propriété et les permissions.
  • -z, --compress. Cette option force rsync à compresser les données lors de leur envoi à la machine de destination. N’utilisez cette option que si la connexion à la machine distante est lente.
  • -P, équivalent à --partial --progress. Lorsque cette option est utilisée, rsync affiche une barre de progression pendant le transfert et conserve les fichiers partiellement transférés. Elle est utile lors du transfert de gros fichiers sur des connexions réseau lentes ou instables.
  • --delete. Lorsque cette option est utilisée, rsync supprime les fichiers étrangers de l’emplacement de destination. Elle est utile pour la mise en miroir.
  • -q, --quiet. Utilisez cette option si vous voulez supprimer les messages autres que les messages d’erreur.
  • -e. Cette option vous permet de choisir un shell distant différent. Par défaut, rsync est configuré pour utiliser ssh.

Utilisation basique de Rsync #

Le cas d’utilisation le plus basique de rsync est de copier un seul fichier d’un à un autre emplacement local. Voici un exemple :

rsync -a /opt/filename.zip /tmp/

L’utilisateur qui exécute la commande doit avoir les droits de lecture sur l’emplacement source et les droits d’écriture sur la destination.

L’envoi du nom de fichier depuis l’emplacement de destination copie le fichier avec le nom actuel. Si vous voulez enregistrer le fichier sous un nom différent, spécifiez le nouveau nom sur la partie destination:

rsync -a /opt/filename.zip /tmp/newfilename.zip

La vraie puissance de rsync vient lors de la synchronisation des répertoires. L’exemple ci-dessous montre comment créer une sauvegarde locale des fichiers d’un site web:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

Si le répertoire de destination n’existe pas, rsync le créera.

Il convient de mentionner que rsync donne un traitement différent aux répertoires source avec une barre oblique de fin (/). Si le répertoire source comporte une barre oblique de fin, la commande copiera uniquement le contenu du répertoire dans le répertoire de destination. Lorsque la barre oblique de fin est omise, rsync copie le répertoire source à l’intérieur du répertoire de destination.

Utilisation de rsync pour synchroniser des données de/vers une machine distante #

Lorsque vous utilisez rsync pour transférer des données à distance, il doit être installé sur la machine source et la machine de destination. Les nouvelles versions de rsync sont configurées pour utiliser SSH comme shell distant par défaut.

Dans l’exemple suivant, nous transférons un répertoire d’une machine locale vers une machine distante :

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/
Si vous n’avez pas défini une connexion SSH sans mot de passe à la machine distante, il vous sera demandé de saisir le mot de passe de l’utilisateur.

Pour transférer des données d’une machine distante vers une machine locale, utilisez l’emplacement distant comme source:

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Si SSH sur l’hôte distant écoute sur un port autre que le 22 par défaut, spécifiez le port en utilisant l’option -e :

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

Lors du transfert de grandes quantités de données, il est recommandé d’exécuter la commande rsync à l’intérieur d’une session d’écran ou d’utiliser l’option -P:

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

Exclure des fichiers et des répertoires #

Il existe deux options pour exclure des fichiers et des répertoires. La première option consiste à utiliser l’argument --exclude et à spécifier les fichiers et les répertoires que vous voulez exclure sur la ligne de commande.

Lorsque vous excluez des fichiers ou des répertoires, vous devez utiliser leurs chemins relatifs à l’emplacement source.

Dans l’exemple suivant montre comment exclure les répertoires node_modules et tmp:

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

La deuxième option consiste à utiliser l’option --exclude-from et à spécifier les fichiers et répertoires que vous voulez exclure dans un fichier.

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/
/exclude-file.txt
node_modulestmp

Conclusion #

Nous vous avons montré comment utiliser Rsync pour copier et synchroniser des fichiers et des répertoires. Il y a beaucoup plus à apprendre sur Rsync à la page du manuel de l’utilisateur de Rsync.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.