Sauvegarde automatique d’une base de données

Voici une procédure pour sauvegarder automatiquement une base de données à intervalles réguliers, en créant un dump de la base, avec la date dans le nom du fichier.

Prérequis : un accès ssh et crontab sur son hébergement

1- Se connecter en ssh :

> ssh hote -luser
Au prompt, entrer le mot de passe.

2- Créer un dossier dédié à nos sauvegardes :

> mkdir save_db
Pour ce tuto, nous mettrons à la fois les fichiers de sauvegardes et les scripts pour les générer. Biensûr, il est possible de s’organiser autrement !
Attention : il est préférable de créer le dossier save_db en dehors de l’arborescence web ! Sinon, les fichiers de sauvegardes seront accessibles en http. Si ce n’est pas possible, penser à protéger votre répertoire avec un .htaccess.

3- Créer le shell qui s’occupe de la sauvegarde :

> cd save_db
> pico sauvegarde_mabase.sh

Pico est un éditeur en ligne de commande, plus simple à utiliser que vi. S’il n’est pas disponible, vous pouvez utiliser vi à la place de pico.

L’éditeur s’ouvre, entrez le code suivant :

#!/bin/sh
date=`date "+%Y-%m-%d"`
mysqldump --opt -h hôte -u user -ppass  base_à_sauvegarder > save_db/mabase-$date.sql

En changeant hôte, user, pass et et base_à_sauvegarder par les accès à votre base de données, et mabase, par le nom du fichier souhaité.

Quittez l’éditeur en sauvegardant (contrôle X puis Y pour pico).

4- Rendre le shell exécutable

> chmod 755  sauvegarde_mabase.sh

Vous pouvez vérifier le bon fonctionnement de votre script en le lançant :

> cd ..
> ./save_db/sauvegarde_mabase.sh

Un nouveau fichier doit avoir été créé  dans le dossier save_db.

5- Automatiser la sauvegarde

Editons le fichier crontab :
> crontab -e

Le fichier s’ouvre avec vi (sauf si un autre éditeur par défaut est spécifié).

Entrer l’instruction suivante (sous vi, commencer par taper « i » pour passer en mode insertion):

0 0 * * * ./save_db/sauvegarde_mabase.sh

(Dans ce cas, notre script sera exécuté tous les jours à minuit.)

Enregistrer et quitter (sous vi : echap puis « :wq »)

La console doit vous indiquer :
crontab: installing new crontab
Sinon, c’est qu’il y a une erreur dans votre instruction de cron.

Vous pouvez vérifier que votre cron est bien pris en compte :
> crontab -l