Publié le : 13/05/2021
Rsync – la synchronisation de fichier local et distant
Rsync (Remote sync) est un outil de synchronisation de fichier local et distant. Il utilise un algorithme qui minimise la taille des données copiées en ne déplaçant que les fichiers modifiés.
En d’autres termes, Rsync est un outil vraiment flexible qui se base sur le réseau. De plus, de part son omniprésence sur tous les systèmes Linux et Unix et sa popularité grâce à sa facilité d’utilisation, il est inclus dans la majorité des distributions Linux par défaut.
Syntaxe de base de rsync pour faire de la synchronisation de fichier en local
En se basant sur le man page de rsync, nous pouvons sortir une syntaxe basique et qui est similaire au syntaxe de ssh, scp et cp.
Ainsi pour copier de manière récursive (flag -r
) le contenu du répertoire rep1 ver le répertoire rep2, nous utiliserons la syntaxe suivante :
$ rsync -r rep1/ rep2
Dans la pratique, nous utiliserons le flag -a
à la place de -r
. Le flag -a
signifie « archive » et se synchronise de manière récursive. De plus, il préserve les liens symboliques, les fichiers spéciaux et de périphérique, les heures de modification, le groupe, le propriétaire et les autorisations.
Nous tenons à souligner la présence du /
à la fin de rep1. Ce /
est nécessaire pour dire que c’est le contenu de rep1 qui va être copié. Si on omet de mettre ce /
, rsync va placer le répertoire rep1 et son contenu dans le répertoire rep2. Ce qui va créer une hiérarchie de répertoire suivante :
$ ~/rep2/rep1/[les fichiers]
Quand on va faire une synchronisation avec rsync, nous recommandons de vérifier les différents arguments. Pour ce faire, rsync fournit la méthode --dry-run
accessible aussi avec le flag -n
. De plus, si on veut savoir qu’est ce ce qui se passe lors de l’exécution de rsync il faudrait mieux utiliser le flag -v
qui signifie verbose.
Ainsi, nous aurons une commande de ce genre :
$ rsync -avn rep1/ rep2
Synchronisation de fichier à distance avec rsync
Après avoir vu comment synchroniser des fichiers localement avec rsync, voyons maintenant comment le faire à distance.
Pour ce faire, rsync utilise l’accès ssh pour faire de la synchronisation de fichier à distance.
Nous aurons alors la commande suivante :
$ rsync -a rep1/ username@adresse_distante:~/rep2
La commande ci-dessus est appelé une opération de push, car on pousse le répertoire rep1 vers la machine distante.
L’opération inverse est appelé pull. Il va être utilisé pour synchroniser le contenu d’un répertoire distant (rep2) à un répertoire local (rep1).
Nous aurons alors la commande ci-dessoous :
$ rsync -a username@adresse_distante:~/rep2/ rep1
Ainsi, nous voyons que les arguments de la commande de rsync est pareil que ceux des outils comme cp
. En effet, on voit que la source de la copie est toujours le premier argument et le deuxième argument est la destination.
Quelques exemples de syntaxe de rsync
Dans ce qui suit, nous allons donner quelques exemples de syntaxe de rsync ainsi que leurs signification.
La première exemple va traiter de la compression des transferts via rsync. Pour ce faire, nous allons utiliser le flag -z
.
$ rsync -az rep1/ rep2
La deuxième exemple va afficher une barre de progression d’une part et permet de reprendre le transfert d’autre part. C’est le flag -P
qui est utilisé qui est la combinaise des flags --progress
et --partial
.
Nous aurons alors le code suivant :
$ rsync -azP rep1/ rep2