
Écrits · 30 oct. 2020
Utiliser rsync pour faire des sauvegardes
Présentation d'un puissant outil de transfert de fichiers
Il est très important de sauvegarder tes données, car on ne sait jamais quand la catastrophe frappe ! Un outil puissant et multiplateforme pour y arriver s'appelle « rsync ». Dans cet article, je t'explique pourquoi rsync est utile et comment t'en servir pour mettre en place tes propres sauvegardes.
Rsync
Depuis sa création en 1996 (par Andrew Tridgell et Paul Mackerras), rsync est devenu un utilitaire standard, disponible sur les distributions GNU/Linux populaires, sur Apple macOS, FreeBSD, NetBSD, OpenBSD et (via Cygwin ou WSL) sur Windows.
Fonctions clés
Rsync sert généralement à synchroniser des fichiers et des dossiers entre deux ordinateurs différents. Il peut utiliser SSH pour se connecter à un autre ordinateur et transférer des fichiers. En plus des ordinateurs distants, tu peux utiliser rsync pour synchroniser vers des disques durs externes et des disques réseau (NAS). Rsync est populaire parce que :
- Il est placé sous la GNU General Public License, ce qui en fait un logiciel libre, libre comme dans « liberté d'expression » et comme dans « bière gratuite »
- L'algorithme de rsync est un type d'encodage delta, ce qui veut dire qu'il réduit au minimum le trafic de données et réseau, puisqu'il ne copie que les parties des fichiers qui ont changé. De plus, les données peuvent être compressées pour optimiser encore le trafic de transfert.
- Il peut reprendre des transferts interrompus grâce à la vérification par somme de contrôle. Rsync peut ainsi détecter les erreurs en copiant un fichier d'un endroit à un autre. Si deux fichiers ne diffèrent que d'un seul bit, leurs sommes de contrôle seront différentes. La vérification par somme de contrôle est un moyen efficace de s'assurer que chaque octet est bien arrivé à destination.
Installer rsync
Si tu es sous GNU/Linux, *BSD ou Apple macOS, tu as probablement déjà rsync installé. Si tu es sous Windows, tu peux regarder le sous-système Windows pour Linux ou WSL pour accéder à tous les outils standard de GNU/Linux. Autre solution que WSL, tu peux utiliser Cygwin pour installer sous Windows la grande collection d'outils GNU et open source.
Utilisation typique de rsync
Rsync s'utilise en ligne de commande, dans un terminal. Tu lances la commande « rsync » suivie d'options (facultatives), d'un chemin source et d'un chemin de destination.

Avec les options -arvz, tu configures rsync pour :
- a : mode « archive », qui préserve les permissions et les dates de création et de dernière modification
- r : mode « récursif », qui permet à rsync de synchroniser récursivement les sous-dossiers des répertoires source et cible
- v : « verbose » (bavard) affiche plus d'informations dans la console, ce qui te permet de suivre la progression ligne par ligne
- z : « compress » active la compression des données pendant l'envoi vers la machine de destination, ce qui réduit la quantité de données transmises, utile sur les connexions lentes ou limitées
- --delete : permet de supprimer côté distant les fichiers qui ont été supprimés du répertoire source. Fais attention avec cette option !
Il existe beaucoup d'autres options qui te permettent d'adapter le comportement de rsync à tes besoins. Consulte la page de manuel de rsync pour la liste complète.
Utiliser rsync pour sauvegarder des fichiers
Dans l'exemple suivant, j'utilise rsync pour copier un dossier (« Sample-Files ») du bureau de mon Windows 10 vers un serveur distant. J'utilise WSL sous Windows pour avoir un environnement Debian_GNU/Linux qui fonctionne dans mon Windows Terminal.

Voici la commande que j'utilise, expliquée :
- rsync est le nom du programme que j'utilise
- -arvz sont les options qui configurent rsync pour faire une sauvegarde archivée, sous-dossiers compris, avec transfert des données compressées
- /mnt/c/Users/mail/Desktop/Sample-files/ est le chemin du répertoire source tel que le voit la structure de dossiers de WSL. Il pointe vers mon bureau Windows (qui se trouve sur le disque C:)
- willem @ store.willem.com:./Backup est la destination, à lire comme « l'utilisateur willem sur le serveur store.willem.com », et « sur ce serveur », utiliser le dossier « Backup » dans le répertoire personnel « ./ » de l'« utilisateur willem ».
Lorsque tu exécutes cette commande pour la première fois, l'empreinte cryptographique du serveur distant s'affiche. Elle sert à s'assurer que tu parles bien à ton serveur. Cela empêche des pirates de se faire passer pour ton serveur sans que tu t'en rendes compte (l'empreinte est unique à ton serveur). Si rsync détecte un changement de cette empreinte, il refusera de transférer les fichiers. C'est essentiel, car copier tes sauvegardes vers une destination distante au hasard serait un risque potentiel de fuite de données !
On te demande ton mot de passe si tu te connectes via SSH sans authentification par clé. Ça va si tu comptes lancer tes transferts à la main, mais si tu veux les automatiser, mieux vaut mettre en place l'authentification par clé (avec la commande pratique « ssh-copy-id »). Ton ordinateur pourra alors se connecter en toute sécurité à la machine distante sans saisir de mot de passe à la main.

Si rsync parvient à se connecter, il détermine ensuite quels fichiers doivent être transférés. Si tu as activé l'option « -v », tu vois la progression ligne par ligne. Une fois le transfert terminé, rsync affiche un résumé et s'arrête.
Transferts incrémentiels
L'atout maître de rsync, c'est qu'il gère entièrement les transferts incrémentiels de données, dès l'installation. Si tu as quelques nouveaux fichiers et que tu relances la même commande rsync, il ne transférera que les fichiers qui en ont besoin.

Tu peux voir sur la capture d'écran que rsync a détecté automatiquement le nouveau fichier. Il n'a transféré que ce fichier vers le serveur distant. On économise de la bande passante, du temps et de la puissance de calcul. Ça marche avec les nouveaux fichiers et avec les fichiers modifiés.
En option, tu peux utiliser l'option « --delete » pour répercuter les suppressions locales dans le répertoire cible, et créer ainsi une image miroir parfaite de ta structure de fichiers locale. Pour des sauvegardes, tu peux envisager de t'en passer (tu risques de supprimer des fichiers sans le vouloir).
Automatiser les transferts et les sauvegardes
Comme rsync n'est « qu'une commande de terminal », tu peux facilement l'utiliser dans tes propres scripts. Imagine un script comme une collection de commandes rsync qui forment un ensemble de liens « source » et « destination » entre tes fichiers et leurs emplacements de sauvegarde respectifs.
Tu peux programmer ton script pour qu'il s'exécute automatiquement un certain jour de la semaine et à une certaine heure. Sous GNU/Linux, *BSD et macOS, tu peux utiliser cron pour ça. Sous Windows, tu peux utiliser l'appli « Planificateur de tâches ».
Conclusion
Avec rsync, tu peux transférer des fichiers de ton ordinateur vers un autre système de façon efficace, sûre et incrémentielle. Ce peut être un outil essentiel dans ta stratégie de sauvegarde.
Il est libre et très répandu. Ses performances et sa fiabilité ne sont plus à prouver. Il n'y a vraiment aucune excuse pour ne pas mettre en place correctement tes sauvegardes !