Rsync
| Fiche express | |
|---|---|
| Domaine | Synchronisation / sauvegarde de fichiers |
| Commande | rsync
|
| Contexte | Copie locale, via SSH, ou vers un démon rsync (rsync://)
|
| Options clés | -a (archive) · -v (verbose) · --delete · -n (dry-run)
|
| Voir aussi | SSH, Cron |
rsync synchronise des fichiers et répertoires, en local ou entre deux machines (via SSH ou un démon rsync dédié). Il ne transfère que les parties modifiées des fichiers, ce qui en fait l'outil de référence pour les sauvegardes incrémentales et les mises en miroir de répertoires.
Syntaxe de base
rsync [options] source destination
# copie locale, tous les fichiers d'un répertoire
rsync -zvr /var/opt/installation/inventory/ /root/temp
# copie depuis un serveur distant via SSH
rsync -avz root@192.168.200.10:/var/lib/rpm /root/temp
# ne copier que les répertoires (pas leur contenu), avec -d
rsync -v -d root@192.168.200.10:/var/lib/ .
⚠️ Le slash final sur la source compte : /data/ copie le contenu du
répertoire, /data (sans slash) copie le répertoire lui-même dans la destination.
Options courantes
-a # mode archive : équivaut à -rlptgoD, préserve permissions/dates/liens/propriétaire
-r # récursif
-v # verbose
-z # compresse les données pendant le transfert
-u # ignore les fichiers plus récents sur le récepteur que sur la source
-n, --dry-run # simulation : affiche ce qui serait fait sans rien modifier
-p # préserve les permissions
-l # copie les liens symboliques comme liens symboliques (pas leur cible)
-t # préserve les dates de modification
-g # préserve le groupe propriétaire
-o # préserve le propriétaire (nécessite root côté destination)
-D # préserve les fichiers spéciaux et périphériques
-c, --checksum # compare par checksum plutôt que par taille/date (plus fiable, plus lent)
--progress # affiche l'avancement du transfert
--stats # affiche un résumé statistique en fin de transfert
--inplace # met à jour le fichier de destination sur place (pas de copie temporaire) —
# plus rapide sur gros fichiers modifiés en interne, mais moins sûr en cas de coupure
-e ssh # force le transport via SSH (implicite dès qu'un hôte distant est indiqué user@host:chemin)
Suppression des fichiers obsolètes
--delete # supprime côté destination les fichiers qui n'existent plus côté source
# (par défaut, calculé avant le transfert)
--del # alias de --delete-during : suppression au fil du transfert plutôt qu'avant —
# plus rapide, comportement à privilégier
--force # force la suppression d'un répertoire non vide qui remplace un fichier (ou inversement)
--ignore-errors # supprime les fichiers obsolètes même si des erreurs de lecture sont survenues
Copier vers/depuis un serveur distant (SSH)
# envoyer un répertoire local vers un serveur distant
rsync -avz -e ssh /root/temp root@192.168.200.10:/var/lib/rpm
# synchroniser le serveur local vers un serveur distant (écrase les fichiers modifiés)
rsync -lrvcpogtu /home/ root@remote:/home/
# variante --inplace : plus rapide, sans passer par -c (checksum, souvent long à calculer)
rsync -lrvpogt --inplace --stats /home/ root@127.0.0.1:/home/
Réplication incrémentale entre deux serveurs
# miroir complet d'un répertoire, y compris les liens durs (-H) et les fichiers plus récents
# côté source uniquement (-u), en conservant les métadonnées (-a)
rsync -ravHu -e ssh /data/ root@192.168.0.1:/data/
# synchronisation avec suppression des obsolètes et exclusion d'un fichier
rsync -e ssh -uarpv --stats --del --exclude '/var/www/wiki/config.php' \
/var/www/wiki/ root@192.168.0.1:/var/www/wiki/
Sauvegarde avec suppression des obsolètes
rsync -rltgoDv --del --ignore-errors --force /home/utilisateur/ /mnt/sauvegarde/
rsync -av --del --stats /home/ /media/sauvegarde_home/
rsync -a --stats --progress --delete /home/ /media/sauvegarde_homes/
Filtrer des fichiers
--exclude exclut un motif donné ; --filter permet des règles plus
fines (le préfixe - exclut, + inclut explicitement).
# exclure les logs et le lost+found via --filter
rsync -a --filter "- *.log" --filter "- lost+found/" source/ destination/
# jeu de filtres type pour une sauvegarde de /home
rsync -av --del --stats \
--filter "- .thumbnails/" --filter "- .Trash/" --filter "- *.tmp" \
--filter "- *.iso" --filter "- lost+found/" --filter "- .cache/" \
/home/ /sauvegarde/SauvHome/
Pour une liste d'exclusions plus longue, préférer un fichier avec --exclude-from=fichier
plutôt que d'empiler les --filter en ligne de commande.
Mode daemon (rsync://)
rsync peut aussi cibler un démon rsync dédié (défini côté serveur dans
/etc/rsyncd.conf, module nommé), sans passer par SSH — syntaxe à double
deux-points :
rsync rsyncserver::ftp/* .