Sauvegarde automatique d'un serveur linux avec rsync
Prenons le cas de deux serveurs linux, un serveur "sandbox.riffzone.net" que je veux automatiquement sauvegarder sur un second serveur "carbon.riffzone.net".
Sur carbon.riffzone.net, j'installe d'abord rsync:
apt-get install rsync
Puis je crée, toujours sur carbon.riffzone.net, une clé ssh pour mes futures opérattions avec rsync:
ssh-keygen -t rsa
J'obtiens d'une part, dans ~/.ssh/id_rsa, une clé privée qui se présente sous cette forme:
-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAocm7KjdmRiOHQGH8kXndebAK/1XesQQHmvOET8qqan9Vvn6Q WOPreHCx7b19XoPlzFm3FjSQAZrJHqteu8yEEM8p8/Fjt4ObT3Q4PYsMY7xiYYDN v3XHof8I6Pf7grl7kBmnR5l/QQ8/N4xomOao+/V+Jq7tBrg1ZMG6wadF9kYOrhGt .... R67WUQKBgF039++AVNlCsKLR6RD+n5z16nSE9VsyfLTeWU8OS5NfEpkr9fYTWuIr aHKnUz6LXZz6hzN8V/yOq3uYJtR9GCMqAqUW1z5Lw3RvGpVMz6QFkHIGRPsKaJHo S1myZTT9ad2UkBCBGZ8y8ShZT/AGFi/2o/Umx1cIicn0Blfkzs1T -----END RSA PRIVATE KEY-----
ainsi, dans ~/.ssh/id_rsa.pub, qu'une clé publique qui se présente sous cette forme:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABFV....zgyqzVT4YFohujBZowOwarV root@carbon.riffzone.net
On laisse la clé privée là où elle est, on récupère par contre la clé publique qu'il va falloir copier puis coller dans le fichier /root/.ssh/authorized_keys ou /root/.ssh/authorized_keys2 de la machine à sauvegarder. On enregistre.
Sur carbon.riffzone.net, connectons-nous manuellement sur sandbox.riffzone.net:
ssh root@sandbox.riffzone.net
Si on se connecte bien sans mot de passe, alors on peut continuer.
Sur carbon.riffzone.net, on va maintenant tester rsync. Mettons qu'on veuille sauvegarder sandbox.riffzone.net:/etc/ sur carbon.riffzone.net:/home/sandbox/etc/, on va exécuter la commande suivante:
rsync -avzh root@sandbox.riffzone.net:/etc/ /home/sandbox/etc/ --delete
Cette commande va effectuer une copie miroir du répertoire /etc/ de sandbox.riffzone.net dans le répertoire /home/sandbox/etc/ de carbon.riffzone.net, en supprimant les fichiers présents sur carbon.riffzone.net qui ne sont plus dans sandbox.riffzone.net (d'où la présence de l'option --delete).
Il n'y a plus qu'à programmer quotidiennement cette commande dans le crontab de carbon.riffzone.net.