Skip to main content

Automatiser la Synchronisation entre Deux Serveurs avec rsync et SSH AVEC VERSIONING

Ce guide explique pas à pas comment synchroniser automatiquement un dossier entre deux machines (Machine A → Machine B) en utilisant rsync via une connexion sécurisée SSH.


Étape 1 : Générer une paire de clés SSH sur la Machine A

On crée une paire de clés (privée/publique) qui permettra à la Machine A de se connecter à la Machine B sans mot de passe.

Commande de génération

ssh-keygen -t rsa -b 4096 -C "votre_email@example.com"
  • -t rsa → type de clé RSA.

  • -b 4096 → longueur de clé (4096 bits, sécurisé).

  • -C → commentaire associé à la clé (souvent l’email).

Où sont créés les fichiers ?

  • Quand la commande te demande :

    Enter file in which to save the key (/home/user/.ssh/id_rsa):
    • Si tu appuies Entrée → les fichiers sont créés dans le chemin indiqué entre parenthèses (par défaut ~/.ssh/id_rsa et ~/.ssh/id_rsa.pub).

    • Si tu entres juste un nom (ex. ma-cle) → les fichiers seront créés dans le dossier courant (./ma-cle et ./ma-cle.pub).

    • Si tu donnes un chemin complet (~/.ssh/serveurX) → ils seront créés exactement là (~/.ssh/serveurX et ~/.ssh/serveurX.pub).

👉 Bonne pratique : indiquer directement un chemin clair, par exemple :

ssh-keygen -t rsa -b 4096 -C "votre_email@example.com" -f ~/.ssh/machineB

Tu auras alors :

  • clé privée → ~/.ssh/machineB (à garder secrète, chmod 600).

  • clé publique → ~/.ssh/machineB.pub (celle à partager).


Étape 2 : Copier la clé publique sur la Machine B

La clé publique doit être ajoutée dans le fichier ~/.ssh/authorized_keys de l’utilisateur cible sur la Machine B.
La commande la plus simple est :

ssh-copy-id -i ~/.ssh/machineB.pub user@100.100.10.100

Explications

  • -i ~/.ssh/machineB.pub → précise explicitement quelle clé publique copier (important si tu en as plusieurs).

  • user@100.100.10.100 → utilisateur et IP/nom de la Machine B.

  • Cette commande va :

    • ouvrir une connexion SSH (tu devras saisir ton mot de passe une dernière fois)

    • créer ~/.ssh/authorized_keys si besoin

    • ajouter la clé publique à ce fichier.

Après ça, la Machine A pourra se connecter sans mot de passe.

Vérifier la connexion

Teste immédiatement :

ssh -i ~/.ssh/machineB user@100.100.10.100

Si tout est correct, tu entres directement sans mot de passe.

👉 Si tu as plusieurs clés sur ta Machine A, il est recommandé de préciser laquelle utiliser, soit avec -i, soit en configurant ~/.ssh/config :

Host machineB
  HostName 100.100.10.100
  User user
  IdentityFile ~/.ssh/machineB
  IdentitiesOnly yes

Tu pourras ensuite faire simplement :

ssh machineB

Étape 3 : Programmer la synchronisation avec cron et rsync

rsync permet de synchroniser efficacement un dossier d’une machine vers une autre.

Test manuel avant tout

rsync -avz --progress /srv/path/to/folder/ user@100.100.10.100:/srv/Folder/
  • -a → mode archive (préserve permissions, liens, etc.).

  • -v → verbose, affiche les fichiers transférés.

  • -z → compresse les données pendant le transfert.

  • --progress → montre l’avancement.

⚠️ Vérifie bien que la commande fonctionne manuellement avant de l’automatiser.

Planification avec cron

Ouvre l’éditeur de tâches planifiées sur la Machine A :

crontab -e

Ajoute la ligne suivante pour exécuter la synchro chaque dimanche à 2h du matin :

0 2 * * 0 rsync -avz /srv/path/to/folder/ user@100.100.10.100:/srv/Folder/
  • 0 2 * * 0 → tous les dimanches à 2h.

  • Le chemin /srv/path/to/folder/ → source sur Machine A.

  • Le chemin user@100.100.10.100:/srv/Folder/ → destination sur Machine B.


Étape 4 : Vérification

  • Lister les tâches cron actives :

crontab -l
  • Vérifier les logs (/var/log/syslog ou journalctl -u cron) si la tâche ne tourne pas.

  • Tester à la main :

rsync -avz --progress /srv/path/to/folder/ user@100.100.10.100:/srv/Folder/

✅ Résumé des bonnes pratiques

  • Toujours savoir où la clé est enregistrée lors de ssh-keygen.

  • Utiliser -i avec ssh-copy-id si tu as plusieurs clés.

  • Vérifier les permissions :

    • ~/.sshchmod 700

    • clé privée → chmod 600

    • clé publique → chmod 644

    • authorized_keys sur Machine B → chmod 600

  • Toujours tester manuellement rsync avant de l’ajouter à cron.


👉 Avec cette méthode, ta Machine A synchronisera automatiquement son dossier vers la Machine B chaque semaine, de manière sécurisée et sans mot de passe.