Blog technique sur mes expériences de développeur.
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.
Ce tutoriel utilisant les tâches cron, assurez-vous que votre pack hébergement vous le propose !
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.
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 :
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.
Notre script étant un simple script bash, l’entête est la suivante :
#!/bin/sh
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
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
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 :
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
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
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
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