KYOSH1RO

◀ Cheatsheets / LINUX & SYSADMIN

rsync — Synchroniser et sauvegarder des fichiers

Guide pratique de rsync pour copier, synchroniser et sauvegarder des fichiers en local ou via SSH, avec exclusions, reprise, snapshots et restauration.

Filtrer
rsync copie et synchronise efficacement des fichiers en local ou à distance. Il ne retransfère que ce qui a changé et peut préserver permissions, dates, liens symboliques et autres métadonnées.

Comprendre la syntaxe

5 cmds
rsync [options] source destination
rsync [options] source utilisateur@serveur:destination
rsync [options] utilisateur@serveur:source destination
Le slash final est essentiel : source/ copie le contenu du dossier, tandis que source copie le dossier lui-même dans la destination.
rsync -avh /srv/photos/ /backup/photos/Copie le contenu de photos
rsync -avh /srv/photos /backup/Crée /backup/photos

Options essentielles

7 cmds
-a, --archiveMode archive : récursif + permissions, dates, liens, propriétaire et groupe
-v, --verboseAfficher les opérations
-h, --human-readableTailles lisibles
-n, --dry-runSimuler sans modifier les fichiers
-i, --itemize-changesDétailler précisément les changements
--info=progress2Progression globale du transfert
--statsStatistiques finales
Le mode -a n'inclut pas les ACL (-A), les attributs étendus (-X) ni les liens physiques (-H).

Synchronisation locale

6 cmds
Copie classique
rsync -avh /source/ /destination/Synchronisation locale
rsync -avh --info=progress2 /source/ /destination/Avec progression globale
rsync -avhi /source/ /destination/Voir la nature de chaque changement
Copier seulement certains fichiers
rsync -avh --include='*.jpg' --exclude='*' photos/ sauvegarde/Uniquement les JPG du dossier
rsync -avh --max-size=500M source/ destination/Ignorer les fichiers de plus de 500 Mo
rsync -avh --min-size=1M source/ destination/Ignorer les fichiers de moins de 1 Mo

Synchroniser via SSH

7 cmds
● rsync doit être installé sur les deux machines
● l'accès SSH doit fonctionner avant de lancer la synchronisation
● le compte distant doit pouvoir lire ou écrire dans le dossier ciblé
Envoyer vers un serveur
rsync -avh --info=progress2 dossier/ utilisateur@serveur:/srv/backup/Envoyer un dossier
rsync -avh fichier.iso utilisateur@serveur:/srv/backup/Envoyer un fichier
Récupérer depuis un serveur
rsync -avh utilisateur@serveur:/srv/data/ ./data/Récupérer un dossier distant
rsync -avh utilisateur@serveur:/var/log/app.log .Récupérer un fichier distant
Port SSH et options personnalisées
rsync -avh -e "ssh -p 2222" dossier/ utilisateur@serveur:/backup/Utiliser le port SSH 2222
rsync -avh -e "ssh -i ~/.ssh/backup_ed25519" dossier/ utilisateur@serveur:/backup/Utiliser une clé précise
rsync -avh --rsync-path="sudo rsync" dossier/ utilisateur@serveur:/srv/protege/Exécuter rsync avec sudo à distance

Toujours tester avant une suppression

2 cmds
rsync -avhin source/ destination/Simulation détaillée
rsync -avhin --delete source/ destination/Prévisualiser aussi les suppressions
Attention : --delete supprime dans la destination les fichiers absents de la source. Vérifier le sens source → destination et effectuer un --dry-run avant la vraie commande.

Créer un miroir

4 cmds
rsync -avh --delete source/ destination/Destination identique à la source
rsync -avh --delete-delay source/ destination/Reporter les suppressions à la fin
rsync -avh --delete --max-delete=50 source/ destination/Limiter le nombre de suppressions
rsync -avh --delete --backup --backup-dir=/backup/anciens source/ destination/Conserver les éléments remplacés

Exclure des fichiers

9 cmds
rsync -avh --exclude='*.tmp' source/ destination/Exclure une extension
rsync -avh --exclude='cache/' source/ destination/Exclure un dossier
rsync -avh --exclude='.git/' --exclude='node_modules/' source/ destination/Plusieurs exclusions
rsync -avh --exclude-from=rsync-exclusions.txt source/ destination/Charger un fichier d'exclusions
Exemple de fichier rsync-exclusions.txt
*.tmp
*.log
cache/
.git/
node_modules/

Préserver les métadonnées

3 cmds
sudo rsync -aHAX --numeric-ids source/ destination/Préserver liens physiques, ACL, xattrs et identifiants numériques
rsync -avh --chown=www-data:www-data source/ destination/Changer propriétaire et groupe à destination
rsync -avh --chmod=D755,F644 source/ destination/Fixer les droits des dossiers et fichiers
Les options -o, -g, -A et -X nécessitent des droits et des systèmes de fichiers compatibles. Pour une sauvegarde système, lancer rsync avec les privilèges adaptés.

Reprendre un transfert interrompu

4 cmds
rsync -avh --partial --info=progress2 gros-fichier.iso utilisateur@serveur:/backup/Conserver le fichier partiel
rsync -avh --partial-dir=.rsync-partial source/ destination/Ranger les fragments dans un dossier dédié
rsync -avh --timeout=60 source/ utilisateur@serveur:/backup/Abandonner après 60 s sans données
rsync -avh --bwlimit=10M source/ utilisateur@serveur:/backup/Limiter la bande passante à 10 Mio/s

Snapshots avec liens physiques

3 cmds
--link-dest permet de créer des sauvegardes datées : les fichiers inchangés partagent les mêmes données sur disque, tandis que les fichiers modifiés sont recopiés.
mkdir -p /backup/2026-08-13
rsync -aH --delete --link-dest=/backup/latest/ /srv/data/ /backup/2026-08-13/
ln -sfn /backup/2026-08-13 /backup/latest
Pour le premier snapshot, omettre --link-dest puisque `/backup/latest` n'existe pas encore. La cible de --link-dest est interprétée relativement au dossier de destination lorsqu'elle n'est pas absolue. Vérifier les liens avec ls -li.

Automatiser une sauvegarde

6 cmds
Script minimal
#!/bin/bash
set -euo pipefail
DEST="/backup/$(date +%F)"
mkdir -p "$DEST"
rsync -aHAX --delete --link-dest=/backup/latest/ /srv/data/ "$DEST/"
ln -sfn "$DEST" /backup/latest
Planification cron
0 2 * * * /usr/local/sbin/backup-rsync.sh >> /var/log/backup-rsync.log 2>&1Chaque nuit à 02:00

Restaurer des données

3 cmds
rsync -avhin /backup/latest/ /srv/data/Vérifier la restauration sans rien écrire
rsync -avh /backup/latest/ /srv/data/Restaurer vers le dossier d'origine
rsync -avh /backup/latest/fichier.conf /srv/data/fichier.confRestaurer un seul fichier

Diagnostic

5 cmds
rsync --versionVersion et fonctionnalités disponibles
ssh utilisateur@serveurTester SSH séparément
rsync -avhi --dry-run source/ destination/Comprendre les différences
rsync -avh --stats source/ destination/Afficher le bilan du transfert
echo $?Code retour de la dernière commande
● code 0 : succès
● code 23 : transfert partiel à cause d'une erreur
● code 24 : des fichiers source ont disparu pendant le transfert
● code 30 : délai d'attente dépassé

Bonnes pratiques

● Toujours simuler avec --dry-run avant --delete
● Utiliser des chemins absolus dans les scripts et cron
● Conserver plusieurs générations de sauvegardes
● Tester régulièrement une restauration réelle
● Surveiller le code retour et les journaux
● Une synchronisation seule ne remplace pas une sauvegarde versionnée et hors site

Aucune commande ne correspond à ce filtre.