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 à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 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,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/
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.