28/04/2026

parallel-rsync – Empiler les rsync en parallèle sans galère

Par admin

parallel-rsync - Empiler les rsync en parallèle sans galère

Vous synchronisez 4 ou 5 dossiers vers plusieurs serveurs avec rsync ? Alors vous connaissez ce sketch quand un job mouline pendant que les autres font la queue, parce que rsync de base c’est mono-thread et ça avance en file indienne.

Hé bien y’a un petit utilitaire Python qui dégoupille tout ça, pondu par overflowy. Ça s’appelle
parallel-rsync
et le nom annonce la couleur !

L’idée c’est de pouvoir empiler plusieurs jobs rsync en parallèle, avec une config YAML pour piloter le tout. Vous décrivez vos sources et destinations dans sync.yml, vous lancez parallel-rsync -c sync.yml --workers 4 --max-per-host 2, et hop, ça parallélise.

Le bougre tourne sur un ThreadPoolExecutor Python 3 qui spawn N processus rsync système avec un cap global et un cap par hôte. Et pendant ce temps, des barres de progression vous affichent l’avancement de chaque transfert sans que la console parte en sucette.

La dernière fois, je vous parlais de
rsyncy
qui collait juste une barre de progression à un rsync solo mais là, on monte clairement d’un cran avec une orchestration multi-cibles.

--workers cap c’est donc le nombre total de processus rsync simultanés (4 par défaut). --max-per-host limite la concurrence par destination (2 par défaut, histoire de ne pas saturer un seul serveur, parce que oui, balancer 8 rsync sur la même machine c’est juste se tirer une balle dans le pied côté I/O).

--timeout met une laisse à chaque rsync, --dry-run ajoute le flag à toutes les commandes pour tester avant de tirer, et --no-progress débraye les barres si vous voulez juste les logs. Côté logging, --log-file et --log-level font également le job.

Par contre y’a pas de retry automatique donc si une session SSH coupe en plein transfert, faudra relancer à la main. C’est logique mais un peu dommage.

Sur un homelab, ce genre de config YAML permet de résoudre le problème des synchros récurrentes avec un seul fichier centralisé au lieu de 8 scripts shell.