Comparateur indépendant · sans classement payant
Accueil / Blog / Technique / rsync : les options qui évitent une synchronisation destructrice

rsync : les options qui évitent une synchronisation destructrice

Un cron rsync inversé efface la prod : trailing slash, --delete et direction SRC→DST écrites évitent la synchronisation destructrice.

Rédaction Hébergeurs.eu 5 min Mis à jour 19 juil. 2026

Vendredi soir, l'équipe rafraîchit la staging : rsync prod → staging avec --delete pour refléter la prod exacte. Lundi matin, la staging est correcte — mais la production affiche des fichiers manquants. Un cron mal commenté a inversé la direction : staging vers prod. rsync a effacé la prod pour matcher une staging partiellement vide.

rsync est l'outil de prédilection pour miroirs rapides et déploiements file-based. Il est aussi symétrique dans sa dangerosité : les mêmes flags qui synchronisent proprement peuvent détruire des années de fichiers en une commande. Le trailing slash, --delete, la direction SRC→DST et les exclusions ne sont pas des détails — ce sont les lignes entre un refresh sain et un incident P1.

Trailing slash : la règle à tatouer


rsync -av prod:/var/www/ staging:/var/www/

# copie le CONTENU de /var/www/



rsync -av prod:/var/www staging:/var/www/

# crée staging:/var/www/www — imbrication nested

Avec le slash final sur la source, rsync copie le contenu du répertoire. Sans slash, il copie le dossier lui-même dans la destination. L'erreur www/www est un classique des refresh staging.

Documentez la convention dans chaque script : commentaire # SRC=prod:/var/www/ DST=staging:/var/www/ avec flèches explicites.

--dry-run et --delete

Toujours -n ou --dry-run avant toute sync avec --delete. Puis --itemize-changes pour audit lisible. Toute ligne *deleting dans la sortie = pause obligatoire, relecture direction, backup daté.

--delete supprime sur la destination ce qui n'existe plus sur la source. Acceptable seulement après dry-run validé, backup destination daté, direction écrite noir sur blanc, review à deux paires d'yeux.

Jamais --delete sur cron sans monitoring exit code et alerte mail si non-zéro.

Direction, flock et backup-dir

BesoinPattern sûr
Refresh stagingprod → staging, delete staging only
Miroir DRprod → DR, checksum -c périodique
Deployartefact CI, pas rsync prod entier

flock sur cron évite deux sync overlap. --backup --backup-dir=dated/ avant delete massif — sauve une copie horodatée des fichiers supprimés.

Variable RSYNC_RSH=ssh explicite ; harmonisez version rsync GNU vs BSD entre serveurs avant automatisation.

Exclusions et pièges

Fichier --exclude-from versionné git : .env, storage/sessions, uploads, caches runtime, node_modules. Ne synchronisez jamais cache vers prod ni secrets vers staging non sanitizé.

--delete-excluded est ultra dangereux — évitez sauf cas expert documenté.

rsync propage aussi le ransomware : un miroir rsync seul n'est pas une stratégie backup. Associez restic ou Borg immuable pour l'historique ; rsync pour la vitesse de miroir.

Monitoring et formation

Alias rsync-safe='rsync -av --dry-run --itemize-changes' pour toute l'équipe d'exploitation. Retirer dry-run = acte conscient signé.

Post-sync : script diff nombre de fichiers source/destination. Cron mail sur exit non-zéro — échec silencieux classique vendredi nuit.

Onboarding 30 min : quiz trailing slash, lecture post-mortem direction inversée. Deux crons directions opposées = perte de données à terme — revue architecture obligatoire.

Coupler versioning

Rsync vitesse, restic historique — source vérité restore documentée.

Deux cron rsync directions opposées = perte data eventual — revue architecture sync bidirectionnel.

Suivi opérationnel

Formation rsync onboarding exploitation — 30 min évite incident weekend. Exercice trailing slash quiz. Cron mail on rsync non-zero exit — silent fail classic Friday night. Documentez les écarts entre promesse hébergeur et mesure terrain dans la revue trimestrielle.

Poursuite trimestrielle

Formation rsync onboarding exploitation — 30 min évite incident weekend. Exercice trailing slash quiz. Cron mail on rsync non-zero exit — silent fail classic Friday night. Documentez les écarts entre promesse hébergeur et mesure terrain dans la revue trimestrielle.

Flags rsync GNU vs BSD différents — harmoniser versions avant cron automatisé.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Tenez runbook daté, métriques avant/après, revue post-incident — la discipline cumulative évite la panique du vendredi soir.

Décider et avancer sans angle mort

  1. Alias rsync-safe avec --dry-run — retirer dry-run = acte conscient signé.
  2. Trailing slash tatoué — SRC avec / copie contenu ; sans / crée imbrication nested.
  3. Direction SRC → DST en commentaire — chaque script cron ; flock anti overlap.
  4. Excludes versionnés git — .env, sessions, uploads ; jamais --delete-excluded sans review.
  5. Pairer rsync miroir + backup versionné immuable — rsync seul propage ransomware.

Déploiement et DR : guides, annuaire, comparateur.

Questions fréquentes

Que change le slash final sur la source ?

Avec / : rsync copie le contenu du répertoire. Sans / : sous-répertoire imbriqué — erreur classique staging/www/www.

Quand --delete est-il acceptable ?

Après dry-run validé, backup daté, direction SRC→DST écrite, review à deux paires d'yeux. Jamais sur cron sans monitoring exit code.

Faut-il exclure cache et node_modules ?

Oui via --exclude-from versionné. Ne synchronisez pas cache runtime vers prod ni .env ni sessions.

rsync remplace-t-il une sauvegarde versionnée ?

Non : rsync propage aussi le ransomware. Associez backup immuable (restic, Borg) au miroir rsync.


Ajoutez --dry-run par défaut dans vos alias rsync — l'enlever doit être un acte conscient.

Comparez les hébergeurs européens

Filtrez par conformité, localisation et usage — puis ouvrez les fiches pour vérifier le périmètre réel.

Voir l'annuaire
Blog

À lire aussi

Tous les articles →