objectif
Synchroniser des répertoires en local ou via SSH de façon fiable, avec reprise sur coupure, suppression des fichiers obsolètes et sortie lisible.
code minimal
# mirroring local → distant via SSH avec progression et reprise
rsync -a --delete --human-readable --info=progress2 \
--partial --partial-dir=.rsync-partial \
-e 'ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3' \
./src/ user@serveur:/data/src/
utilisation
# dry-run sécurisé pour voir les changements
rsync -a --delete --human-readable --itemize-changes -n \
./src/ user@serveur:/data/src/
# synchronisation locale (même disque ou disques différents)
rsync -a --delete --human-readable --info=progress2 \
./src/ ./dest/
# exclure des fichiers/dossiers courants
rsync -a --delete --human-readable --info=progress2 \
--exclude '.git/' --exclude 'node_modules/' --exclude '*.tmp' \
./src/ user@serveur:/data/src/
# compression réseau (utile sur liens lents)
rsync -a --delete --human-readable --info=progress2 -z \
./src/ user@serveur:/data/src/
variante(s) utile(s)
# préserver hardlinks, ACL et xattrs quand c'est pertinent
rsync -aHAX --delete --human-readable --info=progress2 \
./src/ ./dest/
# si vous n'avez pas les droits pour préserver owner/group
rsync -a --no-owner --no-group --delete --human-readable --info=progress2 \
./src/ user@serveur:/data/src/
# limiter la bande passante (KB/s)
rsync -a --delete --human-readable --info=progress2 --bwlimit=5000 \
./src/ user@serveur:/data/src/
# utiliser un fichier de filtres (plus lisible que des --exclude en série)
# contenu de .rsync-filter (exemple):
# - .git/
# - node_modules/
# - *.tmp
rsync -a --delete --human-readable --info=progress2 --filter='merge .rsync-filter' \
./src/ user@serveur:/data/src/
notes
- le slash final compte:
./src/copie le contenu desrcdans la cible;./srccrée un dossiersrcdans la cible. --deletesupprime dans la cible ce qui n’existe plus dans la source; combinez avec-nen amont pour vérifier.--partialet--partial-dir=.rsync-partialpermettent de reprendre un transfert interrompu proprement.- mettez la cible sur le même système de fichiers pour profiter au mieux de la sécurité des opérations; sinon
rsyncgère les copies. - si le lien est instable, combinez
-zavec l’option SSH de keepalive dans-e 'ssh ...'.