Ludovic ROLAND

Blog technique sur mes expériences de développeur.

1&1 : Réalisez des backup réguliers de vos sites internet

18 janvier 2014

Je vous propose aujourd’hui un ticket vous montrant comment faire facilement des sauvegardes régulières et automatiques de vos sites internet hébergés chez 1&1.

Le principe

Le principe est extrêmement simple : une tâche cron (si vous ne savez pas ce que c’est, pas de panique, je reviendrai dessus un peu plus loin) exécute un script dont le rôle est de créer une copie de votre site internet et de sa base de données dans une archive.

Mise en place de l’environnement

La première chose que nous allons faire est mettre en place notre environnement de backup.

Via un client FTP comme FileZilla ou un  terminal et une connexion SSH, créez le répertoire «backup» à la racine de votre espace web.

Dans le répertoire «backup», créez maintenant le répertoire «scripts». Il s’agit du répertoire dans lequel nous allons déposer les différents scripts qui s’occuperont de faire les sauvegardes régulières de nos bases de données.

Finalement, dans le répertoire «scripts», créez le répertoire «tmp». Ce répertoire permettra à nos scripts de stocker temporairement des données.

Vous devriez normalement avoir l’arborescence suivante :

Le script

Maintenant que notre environnement de travail est en place, nous allons pouvoir passer à l’écriture de notre script qui est en réalité un simple script bash.

L’entête

Notre script étant un simple script bash, l’entête est la suivante :

#!/bin/sh

Quelques variables

Nous allons maintenant définir quelques variables qui permettront à notre script de par exemple connaître les fichiers à mettre dans l’archive ou encore se connecter à la base de données pour en faire une copie.

Voici donc les variables. Ce morceau de code est bien évidemment à adapter en fonction de vos propres paramètres :

#chemin absolu vers le répertoire racine du site à copier
APPLI_HOME="/kunden/homepages/16/d226483428/htdocs/monsite"

#chemin absolu où l'archive doit être stockée une fois créée
BACKUP="/kunden/homepages/16/d226483428/htdocs/backup"

#informations relatives à la base de données de votre site internet
HOST="host.1and1.fr"
USER="dbo********6" 
PASS="motDePasse" 
BASE_SQL="db********6" 

#chemin absolu où le bakup de la base de données est stocké temporairement
DATABASE="/kunden/homepages/16/d226483428/htdocs/backup/scripts/tmp/dump_monsite.sql"

Si vous ne connaissez pas le chemin absolu de votre site internet, il convient de se connecter en SSH et de saisir la commande suivante :

pwd /kunden/homepages/16/d226483428/htdocs

Le backup de la base de données

Nous allons maintenant créer le backup de la base de données que nous allons placer dans notre fameux répertoire temporaire «tmp» grâce à la ligne suivante :

mysqldump --opt -h $HOST -u $USER -p$PASS $BASE_SQL > $DATABASE

Création de l’archive

Maintenant que nous disposons d’une copie de notre base de données, nous allons créer notre archive qui contiendra les éléments suivants :

  • la copie de notre site internet ;
  • la copie de la base de données.

Afin de pouvoir stocker plusieurs copies de notre site internet, nous allons personnaliser le nom de notre archive avec les informations de la date et de l’heure de création de celle-ci.

Tout ceci est facilement faisable grâce à une petite ligne dans notre script :

tar -cPhzf $BACKUP/test-`date +%Y%m%d`-`date +%H%M`.tar.gz $APPLI_HOME $DATABASE

Un peu de ménage

Finalement, il ne nous reste plus qu’à faire un peu de ménage en supprimant les fichiers temporaires dont nous n’avons plus besoin :

rm -f $DATABASE

Le script complet

Avant de voir comment automatiser l’exécution de notre script, voici le script complet :

#!/bin/sh

#chemin absolu vers le répertoire racine du site à copier
APPLI_HOME="/kunden/homepages/16/d226483428/htdocs/monsite"

#chemin absolu où l'archive doit être stockée une fois créée
BACKUP="/kunden/homepages/16/d226483428/htdocs/backup"

#informations relatives à la base de données de votre site internet
HOST="host.1and1.fr"
USER="dbo********6"
PASS="motDePasse"
BASE_SQL="db********6"

#chemin absolu où le bakup de la base de données est stocké temporairement
DATABASE="/kunden/homepages/16/d226483428/htdocs/backup/scripts/tmp/dump_monsite.sql"

#Backup Base de donnee
mysqldump --opt -h $HOST -u $USER -p$PASS $BASE_SQL > $DATABASE

#on archive l'application ainsi que le fichier de dump MySQL dans le repertoire de sauvegarde 
tar -cPhzf $BACKUP/test-`date +%Y%m%d`-`date +%H%M`.tar.gz $APPLI_HOME $DATABASE

#on supprime le dump MySQL 
rm -f $DATABASE

La tâche cron

Nous allons maintenant mettre en place l’exécution automatique de notre script à l’aide d’une tâche cron.

Pour ce faire, connectez-vous à votre espace web via SSH. Une fois connecté, affichez la table contenant les tâches cron grâce à la commande suivante :

crontab -e

Ajoutez ensuite la ligne concernant l’exécution de notre script. Par exemple, pour exécuter le script tous les lundis à minuit, ajoutez la ligne suivante :

0 0 * * 1 sh /kunden/homepages/16/d226483428/htdocs/backup/scripts/mon_script.sh

Commentaires