Documentation : BackUp Rsync over OpenSSH
Date de publication : 16.7.2004
Date de modification : 21.2.2005
|
|
Effectuer un backup avec rsync et openssh
Pour effectuer un backup sécurisé de fichiers de configuration, des dump de bases de données, ou de quelques sites web, etc., c'est à dire quelques mega octets, l'on peut effectuer ces backup tranquillement en utilisant rsync et openssh.
Il est tout à fait inutile d'utiliser une procédure de backup par tape pour sauvegarder quelques fichiers. Il vous suffit de posséder un serveur qui centralisera tous les backups effectués sur les autres serveurs.
Premièrement il vous faut créer un utilisateur commun sur tous les serveurs, les mots de passe peuvent être différent par contre.
Prenons par exemple dans notre cas l'utilisateur rsync_backup faisant parti du groupe backup.
shell > groupadd backup
shell > useradd -s /bin/bash -g backup -h /home/rsync_backup rsync_backup
shell > mkdir /home/rsync_backup
shell > chown rsync_backup /home/rsync_backup
shell > chgrp bakcup /home/rsync_backup
shell > passwd rsync_backup
Donner un mot de passe différent à chaque utilisateur rsync_backup sur tous les serveurs concernés.
Ensuite logguer vous en shell le premier serveur et exécuter la commande suivante :
shell > ssh-keygen -t rsa
Key generation complete.
Enter file in which to save the key (/home/rsync_backup/.ssh/id_rsa):
Taper sur entrée pour valider, le répertoire ~/.ssh va se créer automatiquement.
Enter passphrase:
Taper directement sur entrée, car nous allons effectuer une procédure de backup basé sur la reconnaissance de la clé publique de l'utilisateur rsync_backup du serveur à sauvegarder.
Enter the same passphrase again:
Retaper de nouveau sur entrée.
Your identification has been saved in /home/rsync_backup/.ssh/id_rsa.
Your public key has been saved in /home/rsync_backup/.ssh/id_rsa.pub
The key fingerprint is:
ea:d5:e7:16:be:4d:af:d4:e2:e6:1c:25:bb:90:b4:2a backup@suse
Vous voila avec un répertoire /home/rsync_backup/.ssh la racine de votre dossier.
Jetons un petit coup d'oeil pour voir quels sont les fichiers qui s'y trouvent :
shell > cd .ssh/
shell > ls -la
drwxr-xr-x 2 rsync_backup backup 4096 Apr 12 23:09 .
drwx--x--x 11 root root 4096 Apr 10 17:10 ..
-rw------- 1 rsync_backup backup 527 Apr 12 23:09 id_rsa
-rw-r--r-- 1 rsync_backup backup 331 Apr 12 23:09 id_rsa.pub
Le fichier id_rsa représente votre clé privé (à mettre en lieu sûr), id_rsa.pub votre clé publique.
Editons le fichier id_rsa.pub et copions son contenu dans un fichier texte.
Maintenant connectons-nous sur le serveur qui va centraliser les backup sous l'utilisateur rsync_backup et créons un fichier known_hosts dans lequel nous allons copier-coller la clé publique mise dans un fichier texte précédement.
Déconnectons-nous du serveur qui va centraliser les backups et reconnectons-nous sur le serveur à backuper.
Tester le connection ssh par :
shell > ssh -l rsync_backup serveurcentral
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)?
Taper yes pour continuer la connexion.
Et hop voilà vous n'avez plus besoin de taper un mot de passe pour vous connecter sur ce serveur.
Passons maintenant à la procédure de backup en elle-même.
Nous voulons sauvegarder et déplacer le dump de toutes les bases de donnée mysql du serveur à backuper vers le serveur central.
Ce dump sera sauvegarder au préalable dans le répertoire /home/rsync_backup/backup et déplacer dans le répertoire /home/rsync_back/reception du serveur central.
Créer ces deuxrépertoires en utilisateur rsync_backup.
Créons ensuite un petit script shell mysqldump.sh en root sur le serveur à backuper :
#!/bin/sh
#
DATESTRING=`date +"%Y%m%d"`
NEWNAME="mysqldump"-$DATESTRING".dump"
mysqldump -u root --password=motdepassedevotreserveurmysql -A > /home/rsync_backup/backup/$NEWNAME
cd /home/rsync_backup/
chown -R rsync_backup backup/
chgrp -R backup backup/
Exécuter ce script en root et vous devriez vous retrouver avec le dump de toutes vos bases de données dans le répertoire backup de l'utilisateur rsync_backup du serveur à backuper.
Maintenant créons un deuxième script, sous l'utilisateur rsync_backup, qui va nous permettre de déplacer le fichier dump vers le serveur central au travers d'un tunnel ssh.
#!/bin/sh
#
DEST="serveurcentral"
USER="rsync_backup"
BACKDIR="/home/rsync_backup/backup/"
DESTDIR="/home/rsync_backup/reception/"
OPTS="-v -u -a --rsh=ssh --stats"
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin
rsync $OPTS $BACKDIR $USER@$DEST:$DESTDIR
Exécuter ce script et hop vous voilà avec le dump sur le serveur central.
Contributeur : Eric Romang