The ZATAZ network :: ZATAZ.com :: ZATAZ.net


Documentation : BackUp Rsync over OpenSSH

Date de publication : 16.7.2004
Date de modification : 21.2.2005

Contributeur : Eric Romang

Société : ZATAZ / http://eromang.zataz.com

Eric Romang co-fondateur de ZATAZ, avec Damien Bancal, supervise la direction technique de ZATAZ.

Situé au Luxembourg, Eric Romang a eu l'occasion au cours de ses années d'expériences dans le domaine au sein de datacenter de développer une expertise dans la haute disponibilité d'infrastructure, la mise en place de cluster MySQL, de solutions de stockages, de sauvegardes et de sécurisation d'environnement Linux.


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.


Lien(s) Associé(s) :


contentRight


valider