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
Connectez-vousOn à la Machine A :
Ouvrez un terminal sur la Machine A.
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
suivantetepourdemandegénérer:uneEnternouvellefilepaireindewhichcléstoSSHsave 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_rsaet~/.ssh/id_rsa.pub). -
Si tu entres juste un nom (ex.
ma-cle) → les fichiers seront créés dans le dossier courant (./ma-cleet./ma-cle.pub). -
Si tu donnes un chemin complet (
~/.ssh/serveurX) → ils seront créés exactement là (~/.ssh/serveurXet~/.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
-taurasrsa: 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).
Tu
Suivez les instructions à l'écranalors :
AppuyezsurEntréepour accepter le chemin par défaut où laclé
seraprivéeenregistrée→(~/.ssh/id_rsamachineB)(à garder secrète, chmod 600).Vouspouvezclé
choisirpubliquede→définir~/.ssh/machineB.pubune(cellephraseà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
-
Utilisezssh-copy-idpour copier la clé publique:Cette commande copiera votreLa clé publiquesurdoitlaêtreMachineajoutéeBdanset l'ajoutera aule fichier~/.ssh/authorized_keysde l’utilisateur cible sur la Machine B.
La commande la plus simple est :ssh-copy-idroot@100.-i ~/.ssh/machineB.pub user@100.100.10.100Explications
Remplacezroot-i ~/.ssh/machineB.pubpar→leprécisenomexplicitementd'utilisateurquelleappropriéclé publique copier (important sivoustun'utilisezenpasasl'utilisateurplusieurs).root.Entrezleuser@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
deunel'utilisateurdernièresurfois) -
créer
~/.ssh/authorized_keyssi besoin -
ajouter la
MachinecléBpubliquelorsqueàvousceyfichier.êtes invité.
-
pourraVérifiezAprès ça, laconnexionMachineSSHA:Testez la connexion SSH pour vous assurer que vous pouvez vousse connecter sans mot depassepasse.Vérifier la connexion
Teste immédiatement :
sshroot@100.-i ~/.ssh/machineB user@100.100.10.100Si tout est
configurécorrect,correctement,tuvousentresdevriez pouvoir vous connecterdirectement sansentrer demot de passe.
👉
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
Host machineB
HostName 100.100.10.100
User user
IdentityFile ~/.ssh/machineB
IdentitiesOnly yesTu 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
-
Ouvrez-a→ mode archive (préserve permissions, liens, etc.). -
-v→ verbose, affiche les fichiers transférés. -
-z→ compresse les données pendant lecrontabtransfert. -
--progress→ montre l’avancement. Ajoutez une tâche cron pourrsync:AjoutezAjoute la ligne suivante pourplanifierexécuterl'exécutionladesynchro chaquersyncsemaine, 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écifietousl'heureleset 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érificationcommande-
pour synchroniserLister les
fichiers.tâches cron actives :
rsynccrontab -l-
Vérifier les logs (
/var/log/syslogoujournalctl -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
-iavecssh-copy-idsi tu as plusieurs clés. -
Vérifier les permissions :
-
~/.ssh→chmod 700 -
clé privée →
chmod 600 -
clé publique →
chmod 644 -
authorized_keyssur Machine B →chmod 600
-
-
EnregistrezToujourset quittez l'éditeur:Enregistrez les modifications et quittez l'éditeur. La tâche est maintenant programmée.
-
rsync -avz --progress /srv/path/to/folder/ user@100.100.10.100:/srv/Folder/
⚠️ 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
Étape 4 : Vérification
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 -lTesteztester manuellementla commandersync:Avant de compter sur la tâche cron, testez manuellement la commandersyncpouravantvousdeassurerl’ajouterqu'elleàfonctionne comme prévu :cron.rsync
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 passe.rsyncsans --progressmot -avde /srv/path/to/folder/ root@100.100.10.100:/srv/Folder/