---
title: "Utiliser rsync pour faire des sauvegardes"
date: 2020-10-30
language: fr
topics: ["Freedom", "SSH", "Windows", "data", "howto", "linux", "networking", "server"]
source_url: https://willem.com/fr/2020-10-30_utiliser-rsync-pour-faire-des-sauvegardes/
---
# 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 (https://en.wikipedia.org/wiki/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 (https://en.wikipedia.org/wiki/Delta_encoding), 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 (https://docs.microsoft.com/en-us/windows/wsl/install-win10) pour accéder à tous les outils standard de GNU/Linux. Autre solution que WSL, tu peux utiliser Cygwin (https://www.cygwin.com/) 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.

![Commande rsync typique, avec les options -arvz, un My-Source-Directory et un My-Remote-Directory sur un serveur](https://willem.com/global/images/7a7bafa71781.webp)

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 (https://www.man7.org/linux/man-pages/man1/rsync.1.html) 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 (https://docs.microsoft.com/en-us/windows/wsl/install-win10) pour avoir un environnement Debian_GNU/Linux qui fonctionne dans mon Windows Terminal.

![Utiliser rsync sous Windows 10 avec WSL](https://willem.com/global/images/0c7ba3c82117.webp)

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é (https://www.redhat.com/sysadmin/configure-ssh-keygen) (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.

![Utiliser rsync pour copier des fichiers du bureau de mon Windows 10 vers un serveur Debian GNU/Linux via SSH (avec WSL)](https://willem.com/global/images/c497fa4abfcc.webp)

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.

![Après avoir ajouté la photo de la Voie lactée à mes fichiers d'exemple, je relance rsync pour qu'il transfère mes fichiers de façon incrémentielle, en ne copiant que le nouveau fichier](https://willem.com/global/images/d76217c9a685.webp)

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 !
