Aller au contenu
Administration Linux medium

Maîtriser rsync pour des sauvegardes rapides

14 min de lecture

rsync est un outil de synchronisation de fichiers rapide et efficace, largement utilisé pour les sauvegardes, la migration de données et la réplication de répertoires, aussi bien en local qu’à distance. Contrairement à des commandes comme cp, scp ou tar, rsync ne transfère que les différences entre les fichiers, ce qui permet d’économiser du temps et de la bande passante. Que ce soit pour sauvegarder un serveur, déplacer des données ou maintenir des copies à jour, rsync s’impose comme un allié indispensable pour tout administrateur système.

Pour bien utiliser rsync, il est important de connaître les principes techniques qui expliquent sa rapidité et son efficacité. Voici les notions clés à maîtriser :

  • Synchronisation différentielle : Seuls les blocs modifiés sont transférés, ce qui minimise la quantité de données envoyées.
  • Comparaison sur métadonnées : rsync détecte les changements en comparant la taille, la date de modification et les permissions ; pour une comparaison plus précise, l’option -c utilise des checksums.
  • Mode local et distant : La synchronisation peut s’effectuer sur la même machine ou à distance via une connexion sécurisée SSH.
  • Conservation des attributs : Avec -a, rsync préserve les droits d’accès, les dates, les liens symboliques et les structures de répertoires.
  • Gestion des suppressions : L’option —delete permet d’aligner la destination avec la source en supprimant les fichiers devenus obsolètes.
  • Résilience aux coupures : Grâce aux options —partial et —append, un transfert interrompu peut être repris sans tout recommencer.

Ces concepts expliquent pourquoi rsync est devenu un outil incontournable pour la sauvegarde, la migration et la synchronisation de données.

La commande rsync utilise une syntaxe simple mais très puissante. Voici sa structure générale :

Fenêtre de terminal
rsync [options] source destination

Le source est le fichier ou le répertoire que vous souhaitez copier, tandis que destination est l’endroit où vous voulez le transférer. Cette destination peut être locale ou distante, selon vos besoins.

Voici quelques options fréquemment utilisées avec rsync :

  • -a : active le mode archive pour préserver les permissions, les dates et les liens symboliques.
  • -v : affiche les détails des opérations en cours (verbose).
  • -z : compresse les données durant le transfert.
  • —progress : affiche la progression détaillée du transfert.

Ces options peuvent être combinées pour former des commandes très flexibles, adaptées à de nombreux scénarios.

Un point fondamental à comprendre avec rsync est la différence d’interprétation selon la présence d’une barre oblique finale :

  • Sans barre oblique à la fin de la source :

    Fenêtre de terminal
    rsync -avz /source /destination

    Cette commande copie le dossier source et son contenu dans destination. On obtient donc un répertoire /destination/source. Cela signifie que le dossier source lui-même est créé dans la destination, et son contenu est copié à l’intérieur.

  • Avec barre oblique à la fin de la source :

    Fenêtre de terminal
    rsync -avz /source/ /destination

    Ici, seul le contenu du dossier source est copié et non le dossier lui-même. La destination devient donc /destination/ et le contenu de source est directement placé à l’intérieur.

Ce détail peut sembler anodin, mais il change totalement le résultat de la synchronisation. Prenez donc toujours soin de vérifier la syntaxe avant d’exécuter une commande en production. Vous pouvez utiliser —dry-run pour simuler le transfert sans rien modifier réellement.

Utiliser rsync pour synchroniser des fichiers ou des répertoires sur une même machine est une excellente manière de sécuriser vos données rapidement et efficacement.

Pour copier un fichier avec rsync, la commande est simple :

Fenêtre de terminal
rsync -avz /chemin/source/fichier.txt /chemin/destination/

Pour copier un répertoire entier :

Fenêtre de terminal
rsync -avz /chemin/source/ /chemin/destination/

La barre oblique après source/ assure que seul le contenu du répertoire est copié et non le répertoire lui-même.

  • -a : Le mode archive conserve les droits d’accès, les liens symboliques, les propriétaires et les groupes.
  • -v : Avec l’option verbose, chaque fichier copié est affiché dans le terminal.
  • -z : La compression (gzip) réduit la taille des données en transit, même si ce gain est plus notable lors de synchronisations réseau.

Ces options sont souvent utilisées ensemble pour garantir une copie fiable et rapide.

  1. Copier un répertoire personnel vers un dossier de sauvegarde :

    Fenêtre de terminal
    rsync -avz /home/utilisateur/Documents/ /home/utilisateur/Sauvegardes/Documents/
  2. Mettre à jour une sauvegarde sans recopier les fichiers inchangés :

    Fenêtre de terminal
    rsync -avz /home/utilisateur/Photos/ /media/backup/Photos/
  3. Tester une synchronisation sans rien modifier :

    Fenêtre de terminal
    rsync -avzn /home/utilisateur/Vidéos/ /media/backup/Vidéos/

    L’option -n active le mode —dry-run, très utile pour vérifier ce qui serait copié.

Grâce à sa capacité à ne transférer que les fichiers modifiés, rsync est idéal pour maintenir des copies de travail locales à jour sans perte de performance.

rsync offre une grande flexibilité pour choisir précisément quels fichiers synchroniser grâce aux options —exclude et —include.

Pour exclure certains fichiers ou répertoires lors d’une synchronisation, utilisez —exclude :

Fenêtre de terminal
rsync -avz --exclude 'fichier.log' /chemin/source/ /chemin/destination/

Cela ignore le fichier fichier.log pendant la copie.

Pour inclure des fichiers spécifiques tout en excluant d’autres, combinez —include et —exclude :

Fenêtre de terminal
rsync -avz --include 'important.txt' --exclude '*' /chemin/source/ /chemin/destination/

Cette commande synchronise uniquement important.txt et ignore tout le reste.

Astuce : L’ordre des options —include et —exclude est important. rsync les interprète dans l’ordre où elles apparaissent.

Lorsque les règles deviennent nombreuses, il est préférable d’utiliser un fichier d’exclusion. Ce fichier liste les motifs à ignorer :

excludes.txt :

*.tmp
*.bak
.cache/
logs/

Puis utilisez la commande suivante :

Fenêtre de terminal
rsync -avz --exclude-from='excludes.txt' /chemin/source/ /chemin/destination/

Cela rend les synchronisations plus lisibles et plus faciles à maintenir.

  1. Exclure tous les fichiers temporaires :

    Fenêtre de terminal
    rsync -avz --exclude '*.tmp' /home/utilisateur/ /media/backup/
  2. Inclure seulement des fichiers PDF et ignorer le reste :

    Fenêtre de terminal
    rsync -avz --include '*.pdf' --exclude '*' /home/utilisateur/Documents/ /media/backup/Documents/
  3. Utiliser un fichier d’exclusion personnalisé :

    Fenêtre de terminal
    rsync -avz --exclude-from='/home/utilisateur/excludes.txt' /var/www/ /media/backup/www/

La maîtrise de —exclude et —include permet d’optimiser vos sauvegardes, en limitant la copie aux données réellement utiles.

rsync excelle également dans la synchronisation de fichiers entre une machine locale et un serveur distant en utilisant SSH pour sécuriser les transferts.

Pour envoyer un fichier ou un répertoire vers un serveur distant, la commande est :

Fenêtre de terminal
rsync -avz -e ssh /chemin/local/ utilisateur@serveur:/chemin/distant/

Exemple concret :

Fenêtre de terminal
rsync -avz -e ssh /home/utilisateur/Projet/ utilisateur@192.168.1.10:/home/utilisateur/Backup/

Cette commande copie le contenu du répertoire Projet vers le dossier Backup du serveur distant, en utilisant SSH comme canal sécurisé.

Pour récupérer des fichiers depuis un serveur distant vers la machine locale :

Fenêtre de terminal
rsync -avz -e ssh utilisateur@serveur:/chemin/distant/ /chemin/local/

Exemple :

Fenêtre de terminal
rsync -avz -e ssh utilisateur@192.168.1.10:/var/www/html/ /home/utilisateur/Sauvegardes/html/

Cette commande télécharge tout le contenu du répertoire html du serveur vers la machine locale.

Il est également possible de personnaliser la commande ssh, par exemple pour spécifier un port différent :

Fenêtre de terminal
rsync -avz -e "ssh -p 2222" utilisateur@192.168.1.10:/var/www/html/ /home/utilisateur/Sauvegardes/html/

Ici, rsync utilise le port 2222 au lieu du port SSH par défaut (22).

Utiliser SSH avec rsync permet non seulement de sécuriser les transferts, mais aussi d’éviter d’ouvrir des ports non sécurisés sur les serveurs de production.

rsync propose de nombreuses options avancées permettant d’améliorer la gestion des synchronisations complexes.

Suppression des fichiers obsolètes avec —delete

Section intitulée « Suppression des fichiers obsolètes avec —delete »

Pour que la destination reflète exactement la source, y compris en supprimant les fichiers qui n’existent plus dans cette dernière :

Fenêtre de terminal
rsync -avz --delete /chemin/source/ /chemin/destination/

Attention, cette option est puissante : elle efface définitivement les fichiers absents de la source. Il est recommandé d’utiliser —dry-run pour tester avant l’exécution réelle.

Pour surveiller le déroulement précis d’un transfert, ajoutez l’option —progress :

Fenêtre de terminal
rsync -avz --progress /chemin/source/ /chemin/destination/

Chaque fichier copié affiche sa taille, le pourcentage transféré et la vitesse de transmission. Pratique pour les gros fichiers !

Pour éviter de saturer la connexion réseau, utilisez —bwlimit pour limiter le débit en kilobits par seconde :

Fenêtre de terminal
rsync -avz --bwlimit=500 /chemin/source/ /chemin/destination/

Ici, le transfert est limité à 500 Kbps. Cette option est particulièrement utile sur des liaisons réseau partagées ou lentes.

Avant d’exécuter une commande sensible, il est fortement conseillé de faire un test avec —dry-run :

Fenêtre de terminal
rsync -avz --delete --dry-run /chemin/source/ /chemin/destination/

Cela simule l’opération, affiche ce qui serait transféré ou supprimé, sans rien modifier réellement. Un excellent moyen d’éviter des erreurs irréversibles.

En combinant ces options avancées, rsync devient un outil extrêmement précis et adaptable à toutes sortes de scénarios de synchronisation.

Pour assurer une meilleure traçabilité des opérations de rsync, redirigez la sortie standard et la sortie d’erreur vers un fichier de log :

Fenêtre de terminal
rsync -avz /chemin/source/ /chemin/destination/ > /var/log/rsync.log 2>&1

De plus, l’option —ignore-errors permet de poursuivre la synchronisation même si une erreur survient :

Fenêtre de terminal
rsync -avz --ignore-errors /chemin/source/ /chemin/destination/

Cela est utile dans les scénarios où il est plus important de sauvegarder le maximum de données possibles, même en cas de problème ponctuel.

Quelques options pour accélérer vos synchronisations :

  • —compress-level=N : Ajuste le niveau de compression (par défaut à 6). Un niveau plus bas diminue la charge CPU.

    Exemple :

    Fenêtre de terminal
    rsync -avz --compress-level=1 /chemin/source/ /chemin/destination/
  • —inplace : Modifie les fichiers directement sur place sans créer de copie temporaire. Attention, cela peut être risqué si la synchronisation est interrompue.

    Fenêtre de terminal
    rsync -avz --inplace /chemin/source/ /chemin/destination/
  • —whole-file : Désactive l’algorithme de delta pour transférer les fichiers en entier, ce qui peut être plus rapide sur des réseaux très rapides.

    Fenêtre de terminal
    rsync -avz --whole-file /chemin/source/ /chemin/destination/

Enfin, pour les très gros volumes de données, pensez à associer rsync à des systèmes de fichiers optimisés comme ZFS ou Btrfs qui offrent des fonctionnalités avancées de snapshots et de compression native.

Avec ces bonnes pratiques, vous exploitez pleinement toute la puissance de rsync tout en assurant la fiabilité et la rapidité de vos transferts.

Pour rendre vos synchronisations régulières et sans intervention manuelle, rsync peut être intégré dans des scripts et planifié avec cron.

Un script de sauvegarde simple avec rsync peut être créé en quelques lignes :

#!/bin/bash
# Script de sauvegarde
rsync -avz --delete /home/utilisateur/Documents/ /media/backup/Documents/

N’oubliez pas de rendre le script exécutable :

Fenêtre de terminal
chmod +x sauvegarde.sh

Vous pouvez ainsi exécuter votre sauvegarde d’un simple appel :

Fenêtre de terminal
./sauvegarde.sh

Pour automatiser l’exécution du script, utilisez cron, le planificateur de tâches de Linux.

Ouvrez la table des tâches de l’utilisateur avec :

Fenêtre de terminal
crontab -e

Ajoutez une ligne pour exécuter la sauvegarde tous les jours à 2h00 :

Fenêtre de terminal
0 2 * * * /chemin/vers/sauvegarde.sh

Si vous ne maitrisez pas cron, consultez mon guide sur l’utilisation de cron.

rsync est naturellement incrémentiel : il ne transfère que les fichiers modifiés. Pour aller plus loin et conserver plusieurs versions, vous pouvez utiliser l’option —link-dest :

Fenêtre de terminal
rsync -avz --link-dest=/media/backup/sauvegarde_precedente/ /home/utilisateur/Documents/ /media/backup/nouvelle_sauvegarde/

Cela crée une nouvelle sauvegarde en utilisant des liens physiques pour les fichiers inchangés, économisant énormément d’espace disque.

rsync devient ainsi un véritable outil de sauvegarde différentielles, idéal pour les environnements professionnels comme personnels.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

10 questions
5 min.
80% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

Maîtriser rsync transforme la gestion des fichiers en une tâche simple, rapide et fiable. Grâce à ses nombreuses options, de la synchronisation locale aux transferts distants sécurisés, rsync s’adapte à tous les besoins. Que vous souhaitiez automatiser vos sauvegardes, optimiser vos transferts ou sécuriser vos données, cet outil reste un incontournable pour tout administrateur système souhaitant gagner en efficacité.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.