Transfert de fichiers Intermédiaire
Rsync, synchronisation incrémentale de fichiers
Transférer et synchroniser des fichiers localement ou à distance en n'envoyant que les portions modifiées.
rsyncsynchronisationsshsauvegardedelta
Définition
rsync (Remote Sync) est un outil de synchronisation de fichiers et de dossiers en local ou à travers le réseau via SSH. Grâce à son algorithme « delta-transfer », il compare l’expéditeur et le destinataire pour ne transférer que les blocs d’octets réellement modifiés, ce qui le rend particulièrement rapide et économe en bande passante.
Le principe du transfert incrémental
Contrairement à une copie classique qui réécrit chaque fichier, rsync procède par étapes :
- Il compare les fichiers par taille et date de dernière modification.
- Si un fichier a changé, il découpe les données en blocs et calcule des sommes de contrôle pour n’expédier que les segments modifiés.
- Il conserve la structure, les permissions et les horodatages d’origine grâce au mode archive.
Mots-clés et options
| Option | Rôle |
|---|---|
-a | Mode archive : récursif, préserve droits, propriétaires, dates et liens |
-v | Mode verbeux : liste les fichiers traités |
-z | Compresse les données durant le transit réseau |
-P | Combine --progress (barre d’avancement) et --partial (reprise en cas de coupure) |
--delete | Supprime de la cible les fichiers absents de la source (miroir parfait) |
-n, --dry-run | Simule l’opération sans écrire ni supprimer de fichier |
-e ssh | Précise le transport SSH et ses paramètres (ex. port non standard) |
Le piège du slash final
La présence ou l’absence d’un slash / à la fin du chemin source modifie le comportement :
- Avec slash (
rsync -a source/ dest/) : copie le contenu du dossiersourcedansdest/. - Sans slash (
rsync -a source dest/) : copie le dossier lui-même à l’intérieur dedest/(dest/source/).
Exemples de code
1. Synchroniser un dossier vers un serveur distant
La combinaison classique -avzP assure un transfert compressé, préservant les droits, avec suivi de progression et reprise :
rsync -avzP ./build/ debian@serveur.example.com:/var/www/site/
2. Miroir exact avec simulation de sécurité
Lorsque l’on utilise --delete, il est recommandé de simuler l’action d’abord avec -n :
# 1. Simuler pour vérifier quels fichiers seraient supprimés
rsync -avP --delete -n ./documents/ /mnt/backup/documents/
# 2. Exécuter la commande réelle
rsync -avP --delete ./documents/ /mnt/backup/documents/
3. Utiliser un port SSH spécifique
rsync -avzP -e "ssh -p 2222" ./app/ debian@serveur.example.com:/opt/app/