EN REDAC rsync : Une commande pour synchroniser et sauvegarder des fichiers
Table des matières
Introduction
Rsync est un programme de synchronisation de fichiers.
La synchronisation avec Rsync est unidirectionnelle, c'est-à-dire qu'elle copie les fichiers de la source en direction de la destination. Rsync est donc utilisé pour réaliser des sauvegardes incrémentales ou pour mettre en place des sauvegardes locales ou distantes.
La commande rsync
La commande s'utilise de cette manière :
Code BASH :
rsync [options] source/ destination/
Attention, il existe une subtilité avec les noms des dossiers, ces 2 commandes vont avoir un comportement différent :
Code BASH :
rsync source/ destination/ rsync source destination/
Dans le premier cas, le contenu de source sera synchronisé dans le dossier destination.
Dans le second cas, le contenu de source sera créé dans destination/source (en conservant le nom du dossier).
Pour ne pas m’emmêler les pinceaux, je mets le / à la fin des 2 dossiers et je créé au besoin mon arborescence dans la destination avant.
rsync possède plein d'avantages et de fonctionnalités, puisqu'il copie/synchronise des fichiers locaux vers/depuis un autre emplacement local ou distant. Il supporte les liens symboliques, et conserve les permissions. Il est plus rapide que scp puisqu'il transfert juste les différences (sauvegarde incrémentale), et est capable de compresser les données pendant le transfert.
Si'il est utilisé d'une source locale vers une destination sur le réseau, il utilise par défaut SSH. le transfert est donc sécurisé et on bénéficie des paires de clés publiques/privées si générées.
Dans le cadre d'une synchronisation avec un hôte distant :
Code BASH :
rsync source/ user@machine:/destination/ rsync user@machine:/source/ destination/
Il est même possible de synchroniser depuis un hôte qui possède un démon rsync :
Code BASH :
rsync rsync://@machine:/source/ destination/
Des exemples
Il sera plus simple d'apprendre rsync par des exemples que d'expliquer les options.
Synchronisation d'une machine locale sur une distante
Sauvegarde de /home/adrien de la machine locale sur la machine distante 212.227.108.142 dans /home/sauvegardes/adrien :
Code BASH :
rsync -avz /home/adrien/ adrien@212.227.108.142:/home/sauvegardes/adrien/
Synchronisation d'une machine locale sur une distante avec un port SSH différent
Sauvegarde de /home/adrien de la machine locale sur la machine distante 212.227.108.142 dans /home/sauvegardes/adrien.
Le serveur SSH distant écoute sur le port 2222 :
Code BASH :
rsync -avz -e "ssh -p 2222" /home/adrien/ adrien@212.227.108.142:/home/sauvegardes/adrien/
Supprimer dans la destination ce qui n'est plus dans la source
Si on veut avec rsync supprimer dans la destination ce qui n'est plus dans la source, on utilisera l'option --delete :
Code BASH :
rsync -avz /home/adrien/ /media/backup/adrien/