Skip to main content

Automatiser la Synchronisation entre Deux Serveurs avec rsync et SSH

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

  1. Connectez-vousOn à la Machine A :

    Ouvrez un terminal sur la Machine A.

  2. Générezcrée une paire de clés SSH(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"
    • Utilisez-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 suivantete pourdemande générer:

      une
      Enter nouvellefile pairein dewhich clésto SSHsave 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

    • -tauras rsa : Spécifie le type de clé (RSA).
    • -b 4096 : Spécifie la longueur de la clé en bits (4096 bits pour une sécurité accrue).
    • -C "votre_email@example.com" : Ajoute un commentaire à la clé (généralement votre adresse e-mail).
  3. Suivez les instructions à l'écranalors :

    • Appuyez sur Entrée pour accepter le chemin par défaut où la

      clé seraprivée enregistrée (~/.ssh/id_rsamachineB) (à garder secrète, chmod 600).

    • Vous pouvez

      clé choisirpublique de définir~/.ssh/machineB.pub une(celle phraseà secrètepartager).

      pour une sécurité supplémentaire ou la laisser vide pour une connexion sans mot de passe.

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

  1. Utilisez ssh-copy-id pour copier la clé publique :

    Cette commande copiera votreLa clé publique surdoit laêtre Machineajoutée Bdans et l'ajoutera aule fichier ~/.ssh/authorized_keys de l’utilisateur cible sur la Machine B.
    La commande la plus simple est :

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

    Explications

    • Remplacez

      root-i ~/.ssh/machineB.pub par leprécise nomexplicitement d'utilisateurquelle appropriéclé publique copier (important si voustu n'utilisezen pasas l'utilisateurplusieurs).

      root.
    • Entrez le

      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 deune l'utilisateurdernière surfois)

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

      • ajouter la Machineclé Bpublique lorsqueà vousce yfichier.

        êtes invité.

    VérifiezAprès ça, la connexionMachine SSHA :

    pourra

    Testez la connexion SSH pour vous assurer que vous pouvez vousse connecter sans mot de passepasse.

    Vérifier la connexion

    Teste immédiatement :

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

    Si tout est configurécorrect, correctement,tu vousentres devriez pouvoir vous connecterdirectement sans entrer de mot de passe.

  2. 👉

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 copie hebdomadairesynchronisation 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/
    • Ouvrez-a → mode archive (préserve permissions, liens, etc.).

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

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

    • --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 :

    Utilisez la commande suivante pour éditer le crontab de l'utilisateur actuel :

    crontab -e
    
  1. Ajoutez une tâche cron pour rsync :

    AjoutezAjoute la ligne suivante pour planifierexécuter l'exécutionla de rsyncsynchro chaque semaine, par exemple tous les dimanchesdimanche à 2h du matin :

    0 2 * * 0 rsync -aavz /srv/path/to/folder/ root@100.user@100.100.10.100:/srv/Folder/
    
    • 0 2 * * 0 : Spécifietous l'heureles et le jour de la semaine (dimanchedimanches à 2h2h.

      du matin).
    • Le chemin rsync -a /srv/path/to/folder/ root@100.→ source sur Machine A.

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


    Étape 4 : LaVérification

    commande
      rsync
    • pour synchroniser

      Lister les fichiers.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 :

      • ~/.ssh → chmod 700

      • clé privée → chmod 600

      • clé publique → chmod 644

      • authorized_keys sur Machine B → chmod 600

    • EnregistrezToujours et quittez l'éditeur :

      Enregistrez les modifications et quittez l'éditeur. La tâche est maintenant programmée.

Étape 4 : Vérification

  1. Vérifiez les tâches cron :

    Vous pouvez lister les tâches cron pour vous assurer que la tâche a été ajoutée correctement :

    crontab -l
    
  2. Testeztester manuellement la commande rsync :

    Avant de compter sur la tâche cron, testez manuellement la commande rsync pouravant vousde assurerl’ajouter qu'elleà fonctionne comme prévu :cron.

    rsync
  3. -a /srv/path/to/folder/ root@100.100.10.100:/srv/Folder/

    Pour👉 faireAvec cette méthode, ta Machine A synchronisera automatiquement son dossier vers la copieMachine B chaque semaine, de suitemanière ensécurisée verbose:et rsyncsans --progressmot -avde /srv/path/to/folder/ root@100.100.10.100:/srv/Folder/passe.