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 #
- Installer Rsync sur Ubuntu et Debian #
- Installer Rsync sur CentOS et Fedora #
- Syntaxe de la commande Rsync #
- Utilisation basique de Rsync #
- Utilisation de rsync pour synchroniser des données de/vers une machine distante #
- Exclure des fichiers et des répertoires #
- Conclusion #
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 àrsyncde 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 forcersyncà 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,rsyncaffiche 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,rsyncsupprime 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,rsyncest 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/
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/
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.