Générer ses backups de base de données automatiquement avec Drush

Générer ses backups de base de données automatiquement avec Drush

09 Mar 2011 |  Drupal

Combien de fois vous vous êtes dit, “si seulement j’avais pris le temps de faire un backup”, “si seulement ma dernière sauvegarde ne remontait pas si loin” ? Oui comme moi il y a un jour ou vous l’avez vraiment regretté… Avec ce qui suit, vous n’aurez plus d’excuses et vous pourrez dormir sur vos deux oreilles (enfin si votre serveur est sous Linux, sinon je ne peux rien pour vous).

Aujourd’hui c’est un donc un énième billet sur Drush, ou du moins sur **la commande sql-dump **et ce afin de créer des sauvegardes automatiques de votre base de données. Je vous l’avais dit, une fois qu’on a goûté à Drush il devient difficile de s’en passer.

Au cas où vous ne découvriez Drush que maintenant voici quelques sujets qui pourraient vous intéresser, à savoir, comment installer drush et comment créer des alias afin de vous faciliter la vie dans la gestion de vos sites.

La commande Magique

Pas de Drush sans commande, du coup nous allons utiliser la commande drush sql-dump. Pour plus d’infos sur cette commande utilisez drush help sql-dump. Si vous utilisez la commande telle quelle, votre dump vous sera affiché dans votre terminal et comme nous, on aimerait bien garder ça dans un fichier, on va ajouter quelques options à notre commande.

$ drush @sandbox sql-dump --result-file --gzip
  • result-file permet de sauvegarder le dump dans un fichier. Par défaut la sauvegarde sera faite dans le répertoire ~/.drush-backups sauf si vous précisez votre propre chemin.
  • gzip sert à compresser le dump de votre base de donnée au format gzip.

Exclure les informations que l’on ne veut pas

La commande sql-dump va faire une sauvegarde complète de la base or nous n’avons pas besoin de récupérer les informations des tables de caches par exemple. Pour spécifier des tables à ne pas sauvegarder ou à exclure il suffit de modifier le fichier drushrc.php. Petit rappel sur ce fichier, vous le trouverez par défaut dans le répertoire examples de votre installation de drush, regardez les premières lignes du fichier pour savoir où vous pourrez le placer.

Dans ce fichier on va pouvoir définir les tables dont on ne veut pas les données (ex: tables de caches) et les tables dont on ne veut même pas la structure (ex: tables maisons, tables de migrations). Pour cela il vous suffira de remplir le tableau $options[‘structure-tables’] ou $options[‘skip-tables’].

/*
 * Customize this associative array with your own tables. This is the list of
 * tables whose *data* is skipped by the 'sql-dump' and 'sql-sync' commands when
 * a structure-tables-key is provided. You may add new tables to the existing
 * array or add a new element.
 */
$options['structure-tables'] = array(
  'common' => array('cache', 'cache_filter', 'cache_menu', 'cache_page', 'history', 'sessions', 'watchdog'),
);

Maintenant qu’on a spécifié les choses inutiles à sauvegarder il ne nous reste plus qu’à le renseigner dans notre commande:

$ drush @sandbox sql-dump --result-file --gzip --structure-table-key=common

Vous pouvez essayer cette commande pour vérifier que l’export fonctionne bien

Plannifier la sauvegarde

Il ne nous reste plus qu’à planifier l’exécution automatique de notre commande dans la crontab.

Pour visualiser ce qu’il y a dans la crontab il suffit d’éxecuter cette commande :

$ crontab -l

Pour modifier votre crontab exécutez celle-ci :

$ crontab -e

Voici un exemple qui va sauvegarder notre base tous les lundi à 4h15.

04 15 * * 1 drush @sandbox sql-dump --result-file --gzip --structure-table-key=common

C’est un exemple parmi tant d’autres à adapter en fonction de votre besoin. Pour plus d’infos sur la configuration de la crontab rendez-vous ici et si c’est encore trop compliqué à cette adresse.

Au final rien de bien compliqué, ça vous prendre plus de temps à lire cet article qu’à créer votre sauvegarde, mais maintenant vous n’avez plus d’excuse :)

Crédits Photo

Julien Dubreuil

Vous avez une idée, un projet web à réaliser ?

Ensemble, mettons en oeuvre sa réussite. Je vous accompagne dans vos projets, depuis l'élaboration du cahier des charges jusqu'à la mise en production. Pour plus d'information n'hésitez pas à me contacter.

Contactez-moi