automatisation des sauvegardes

Automatisation des sauvegardes d’une DMZ sous Debian ou Ubuntu

 

Automatisation des sauvegardes d’une DMZ sous Debian ou Ubuntu

1   Principe de l’automatisation des sauvegardes

Dans un réseau informatique, le nerf de la guerre …. ce sont les sauvegardes. Les logiciels que nous utilisons dans la DMZ du lycée sont codés en php / MySql.

Je montrerai dans un premier temps comment automatiser les sauvegardes des bases de données MySql sur un autre serveur, et dans un deuxième temps comment avoir une deuxième DMZ (en secours en cas de panne de celle qui est en production) parfaitement à jour.

L’exemple que je vais traiter ici est celui des 4 bases de données importantes que nous ne pouvons pas nous permettre de perdre ::
– wordpress.sql
– prisesreseau.sql
– mytinytodo.sql
– spip.sql

2   Sauvegarde automatique des bases de données

La DMZ se trouve dans un vlan à part et pour des raisons de facilité, le serveur de sauvegarde (BACKUP) doit se trouver dans le même vlan. Les deux serveurs (DMZ et BACKUP) doivent pouvoir communiquer par le protocole SSH.

2.1   Génération et copie des clefs SSH

Avant toute chose, ssh doit être installé sur les deux serveurs

sudo apt-get install ssh

Création d’un compte (sur DMZ) permettant les sauvegardes

sudo adduser sauveur

Création d’un compte sur BACKUP recevant les sauvegardes de la DMZ

sudo adduser hosto

Sur BACKUP, génération des clefs ssh

ssh-keygen -t dsa

Il faut laisser la paraphrase vide lors de la génération

Copie de la clef pubique sur DMZ

ssh-copy-id -i ~/.ssh/id_dsa.pub sauveur@IP_DMZ

2.2   Mise place du script de sauvegarde des bases de données

Nous allons créer un script permettant de sauvegarder, dater et compresser les bases de données. On peut l’appeler backup_bases.sh

#! /bin/bash
mysqldump -u user -pmon_mdp -e -B -v spip > /home/sauveur/bases/spip`date +\%Y\%m\%d`.sql &&  gzip /home/sauveur/bases/spip`date +\%Y\%m\%d`.sql
mysqldump -u user -pmon_mdp -e -B -v wordpress > /home/sauveur/bases/wordpress`date +\%Y\%m\%d`.sql && gzip /home/sauveur/bases/wordpress`date +\%Y\%m\%d`.sql
mysqldump -u user -pmon_mdp -e -B -v prisesreseau > /home/sauveur/bases/prisesreseau`date +\%Y\%m\%d`.sql && gzip /home/sauveur/bases/prisesreseau`date +\%Y\%m\%d`.sql
mysqldump -u user -pmon_mdp -e -B -v mytinytodo > /home/sauveur/bases/mytinytodo`date +\%Y\%m\%d`.sql && gzip /home/sauveur/bases/mytinytodo`date +\%Y\%m\%d`.sql

Ensuite, on exécute ce script par exemple une fois par semaine le dimanche à 23h30. On écrit la ligne suivante dans le fichier /etc/crontab

30 23 * * 0    root bash /usr/local/bin/backup_bases.sh

3   Synchronisation de la sauvegarde sur un deuxième serveur

On se connecte sur le serveur BACKUP et on crée deux répertoires : un répertoire bases qui contiendra les bases de données ainsi qu’un répertoire scripts qui contiendra les scripts de sauvegarde

ssh hosto@backup
mkdir bases
mkdir scripts

Création du script de synchronisation (à mettre dans scripts)

#! /bin/bash
log="/home/hosto/scripts/bases_rsync.log";
date=$(date +%Y-%m-%d-%H:%M);
echo "Début synchronisation" >> /home/hosto/scripts/bases_rsync.log;
echo $date >> /home/hosto/scripts/bases_rsync.log;
echo "Début synchronisation" > /home/hosto/scripts/bases_mail.log;
echo $date >> /home/hosto/scripts/bases_mail.log;

rsync -avz -e "ssh -i /home/hosto/.ssh/id_dsa" sauveur@IP_DMZ:/home/sauveur/bases/ /home/hosto/bases/ >> /home/adminlocal/scripts/bases_rsync.log 2>&1 >> /home/hosto/scripts/bases_mail.log
echo "Fin synchronisation" >> /home/hosto/scripts/rsync.log;
echo $date >> /home/hosto/scripts/bases_rsync.log;
echo $date >> /home/hosto/scripts/bases_mail.log;
echo "Rsync du : `date +\%d\%m\%Y` " | mutt -x -a /home/hosto/scripts/mail.log -s "Synchronisation bases" -b mon_adress_mail@mon_domaine.org

On automatise la synchronisation tous le dimanche à 23h45 en faisant un

crontab -e

dans lequel on inscrit

45 23 * * 0    bash /home/hosto/scripts/bases_sync.sh

Et voilà, c’est terminé ! On a donc réalisé une sauvegarde automatique des bases une fois par semaine dans la DMZ puis une synchronisation de cette sauvegarde sur une machine distante afin d’être sur de ne rien perdre.

 

Comments

Laisser un commentaire