Leçon 52 : rsync — Synchronisation de fichiers
Objectif
Maîtriser rsync pour synchroniser efficacement des fichiers et répertoires en local ou à distance. C'est l'outil de référence pour les sauvegardes et la copie incrémentale.
Pourquoi rsync ?
Ne copie que les fichiers modifiés (transfert incrémental)
Much faster than cp pour les gros transferts
Compression intégrée pour réduire la bande passante
Supporte SSH pour des transferts sécurisés
Peut reprendre un transfert interrompu
Syntaxe de base
rsync [options] SOURCE DESTINATION
Options essentielles
Option Description
-aMode archive (preserve permissions, owner, timestamps)
-vMode verbeux (affiche les fichiers)
-zCompression pendant le transfert
-PMontre la progression et permet la reprise
-nMode dry-run (simulation, sans copier)
--deleteSupprime les fichiers dans DEST qui n'existent plus dans SOURCE
--excludeExclut certains fichiers/répertoires
Exemples pratiques
1. Copie locale simple
# Synchroniser un répertoire vers un autre
rsync -av /home/david/documents/ /backup/documents/
# Avec barre de progression
rsync -avP /home/david/documents/ /backup/documents/
2. Transfert via SSH
# Copier vers un serveur distant
rsync -avz -e ssh /local/dir/ user@serveur:/remote/dir/
# Récupérer depuis un serveur distant
rsync -avz -e ssh user@serveur:/remote/dir/ /local/dir/
3. Simulation avant action
# Voir ce qui sera copié sans rien modifier
rsync -avn /source/ /dest/
4. Exclure des fichiers
# Exclure un type de fichier
rsync -av --exclude='*.log' /source/ /dest/
# Exclure plusieurs patterns
rsync -av --exclude='*.tmp' --exclude='.git' --exclude='node_modules/' /source/ /dest/
5. Synchronisation miroir (identique)
# Supprime les fichiers absents de la source
rsync -av --delete /source/ /dest/
6. Sauvegarde quotidienne classique
# Script de sauvegarde vers un serveur de backup
rsync -avz --delete -e ssh /home/david/ user@backup-server:/backup/david/
Cas d'usage courants
Déployer un site web
rsync -avz --delete ./dist/ user@monsite:/var/www/html/
Sauvegarder un serveur vers un NAS
rsync -avz -e ssh root@monserveur:/var/www/ /mnt/nas/serveur/www/
Copier uniquement les fichiers récents (modifiés depuis 7 jours)
rsync -avz --modify-window=1 --min-size=1 /source/ /dest/
Les slashs comptent !
Attention à la présence ou l'absence du / final :
Syntaxe Comportement
rsync -a /source /destCrée /dest/source/
rsync -a /source/ /destCrée /dest/ (contenu de source)
Bonnes pratiques
Toujours faire un dry-run (-n) avant une première synchro
Utiliser -P pour les gros transferts (reprise si coupure)
Protéger les transferts distants avec SSH
Utiliser --delete avec prudence en mode miroir
Exercices pratiques
Copie locale — Synchronise ton dossier ~/Documents vers /tmp/backup-documents/ en mode verbeux.
Simulation — Utilise -n pour voir ce qui serait copié sans rien modifier.
Exclusion — Synchronise un dossier en excluant tous les fichiers .log et le dossier .git.
Sauvegarde distante — Si tu as accès SSH à une machine, synchronise un petit dossier via SSH.
Résumé
Commande Usage
rsync -av source/ dest/Synchronisation locale
rsync -avz -e ssh src/ user@host:dst/Transfert via SSH
rsync -avP src/ dst/Avec progression et reprise
rsync -avn src/ dst/Dry-run (simulation)
rsync -av --exclude='*.log' src/ dst/Avec exclusions
rsync -av --delete src/ dst/Mirroring (synchro exacte)
← Leçon 51 : sort, uniq et wc
Leçon 53 : cut →
Sommaire