29-11-2011 : Remettre dans le débat politique les principes du Conseil National de la Résistance
29-01-2012 : Parce que nous sommes un peuple debout, agissons pour rester dignes et responsables !
Logo de mon site
Logo de mon site
Faire un don

Luxpopuli / eZ Publish / Extensions / eZ Publish : bpce_backupbdd - sauvegarde automatique de la base de données





Right menu

Logo du site ez.no  Logo XHTML 1.O du W3C  Logo XHTML 1.O du W3C  Site francophone officiel de Firefox

eZ Publish : bpce_backupbdd - sauvegarde automatique de la base de données

Date de publication: le samedi 27 février 2010 à 18h42
Dernière modification: par Pascal BOYER le lundi 1 mars 2010 à 14h37
« Article précédent: eZ Publish : traduction de eZ Survey
» Article suivant: eZ Publish : eZ Multiupload - multitéléchargement d'objets

L'extension bpce_backupbdd

Cette petite extension permet d'automatiser la création d'une sauvegarde (dump) de la base de données MySQL utilisée par eZ Publish.

Il est très facile de créer un petit script qui, exécuté à intervalles réguliers par cron, effectuera une telle tâche.

L'avantage de cette extension réside dans le fait qu'elle propose l'affichage d'un nouvel onglet dans le menu de l'interface d'administration permettant l'accès à une interface de gestion à partir de laquel un simple clic déclenche la réalisation (via l'exécution d'un script php) de la sauvegarde de la base de données. Il est ensuite possible de télécharger les dumps réalisés pour en faire des copies locales.

Il devient dès-lors possible de demander à un client n'ayant aucune compétence informatique de réaliser régulièrement des sauvegardes de sa base de données puis de l'archiver localement. Hé oui ! il n'y a pas que les grosses structures, avec les moyens techniques et financiers que cela implique, qui ont le privilège d'avoir un site sous eZ Publish ;-)

  • Une version (PHP5) améliorée de l'extension est disponible en bas de page.
  • Une version (PHP4) améliorée de l'extension est disponible en bas de page.

Télécharger l'extension bpce_backupbdd

L'extension n'est accessible que par le biais de SVN.

Sous Linux, la commande pour récupérer l'extension est (voir cette page: http://projects.ez.no/bpce_backupbdd/subversion ) :

svn checkout http://svn.projects.ez.no/bpce_backupbdd

A    bpce_backupbdd/bpce_backupbdd
A    bpce_backupbdd/bpce_backupbdd/cronjobs
A    bpce_backupbdd/bpce_backupbdd/cronjobs/backup_bdd.php
A    bpce_backupbdd/bpce_backupbdd/ezinfo.php
A    bpce_backupbdd/bpce_backupbdd/settings
A    bpce_backupbdd/bpce_backupbdd/settings/module.ini.append.php
A    bpce_backupbdd/bpce_backupbdd/settings/design.ini.append.php
A    bpce_backupbdd/bpce_backupbdd/settings/bpce_backupbdd.ini
A    bpce_backupbdd/bpce_backupbdd/settings/cronjob.ini.append.php
A    bpce_backupbdd/bpce_backupbdd/settings/menu.ini.append.php
A    bpce_backupbdd/bpce_backupbdd/settings/site.ini.append.php
A    bpce_backupbdd/bpce_backupbdd/GPL
A    bpce_backupbdd/bpce_backupbdd/doc
A    bpce_backupbdd/bpce_backupbdd/doc/create.sql
A    bpce_backupbdd/bpce_backupbdd/doc/doc.txt
A    bpce_backupbdd/bpce_backupbdd/modules
A    bpce_backupbdd/bpce_backupbdd/modules/backupbdd
A    bpce_backupbdd/bpce_backupbdd/modules/backupbdd/list.php
A    bpce_backupbdd/bpce_backupbdd/modules/backupbdd/delete.php
A    bpce_backupbdd/bpce_backupbdd/modules/backupbdd/createbackupbdd.php
A    bpce_backupbdd/bpce_backupbdd/modules/backupbdd/module.php
A    bpce_backupbdd/bpce_backupbdd/modules/backupbdd/download.php
A    bpce_backupbdd/bpce_backupbdd/design
A    bpce_backupbdd/bpce_backupbdd/design/admin
A    bpce_backupbdd/bpce_backupbdd/design/admin/stylesheets
A    bpce_backupbdd/bpce_backupbdd/design/admin/templates
A    bpce_backupbdd/bpce_backupbdd/design/admin/templates/backupbdd
A    bpce_backupbdd/bpce_backupbdd/design/admin/templates/backupbdd/delete.tpl
A    bpce_backupbdd/bpce_backupbdd/design/admin/templates/backupbdd/createbackupbdd.tpl
A    bpce_backupbdd/bpce_backupbdd/design/admin/templates/backupbdd/list.tpl
A    bpce_backupbdd/bpce_backupbdd/design/admin/templates/parts
A    bpce_backupbdd/bpce_backupbdd/design/admin/templates/parts/backupbdd
A    bpce_backupbdd/bpce_backupbdd/design/admin/templates/parts/backupbdd/menu.tpl
A    bpce_backupbdd/bpce_backupbdd/README
Révision 1 extraite.

Puis il faut copier le sous-répertoire bpce_backupbdd dans le répertoire extension de l'installation eZ Publish:

cp -Rp bpce_backupbdd/bpce_backupbdd chemin/vers/repertoire/ezpublish/extension/

Penser à modifier les propriétaires (en fonction des directive User et Group du serveur Apache) des répertoires et fichiers de l'extension.

Activer l'extension bpce_backupbdd

A partir de l'interface d'administration:

Fig. 1: Activer l'extension bpce_backupbdd

Une fois l'extension activée, un nouvel onglet apparaît:

Fig. 2: Nouvel onglet et interface de gestion des fichiers de sauvegarde

Traduction des textes

  • Dump List (menu gauche)

Peut être modifié dans le template extension/bpce_backupbdd/design/admin/templates/parts/backupbdd/ menu.tpl ligne 6.

  • Create BD dump (menu gauche)

Peut être modifié dans le template extension/bpce_backupbdd/design/admin/templates/parts/backupbdd/ menu.tpl ligne 7.

  • Le nom de l'onglet

Peut être modifié dans le fichier extension/bpce_backupbdd/settings/ menu.ini.append.php :

[Topmenu_backupbdd]
NavigationPartIdentifier=ezbackupbddpart
Name=backupbdd                   <======== CETTE LIGNE

Principe de fonctionnement de l'extension bpce_backupbdd

  1. Cliquer sur le lien Create BD dump
  2. Un fichier creation.txt (ne contenant que la chaîne test) est alors créé dans le répertoire var/votreSiteaccess/log/
  3. La présence de ce fichier est la condition sine qua non pour que le script extension/bpce_backupbdd/cronjobs/ backup_bdd.php réalise le dump de la base de données.
  4. L'exécution du script extension/bpce_backupbdd/cronjobs/ backup_bdd.php crée un fichier de sauvegarde dans le répertoire var/votreSiteaccess/log/

Modifications nécessaires

Si vous êtes sous Linux, l'extension du fichier de sauvegarde obtenu est .sql.gz et non simplement .sql

Dès lors, le lien Dump List (menu de gauche) n'affichera absolument rien.

Pour remédier à cela, il faut modifier la ligne suivante du fichier extension/bpce_backupbdd/modules/backupbdd/ list.php:

if ($extension != 'sql') continue;

à remplacer par:

if ($extension != 'gz') continue;

La deuxième modification concerne le script extension/bpce_backupbdd/cronjobs/ backup_bdd.php qui par défaut n'accepte pas les mots de passe d'accès à la base de données contenant des accents ou des espaces. Ce qui engendre un message d'erreur lors de l'exécution du script backup_bdd.php.

Il faut donc remplacer la ligne:

40                 $command .= "-p$dbpass";

par:

40                 $command .= "-p\"$dbpass\"";

Exécution du script backup_bdd.php

La commande manuelle à lancer est:

php runcronjobs.php -s suteaccessPublic backup_bdd

...
Running extension/bpce_backupbdd/cronjobs/backup_bdd.php
bdd var/test/log/test_2010-02-27-2100.sql already saved      

La dernière ligne de la sortie de la commande indique que le fichier de sauvegarde existe déjà. Ceci est dû au fait que le code du script extension/bpce_backupbdd/cronjobs/ backup_bdd.php ne permet de réaliser qu'une sauvegarde par heure. C'est d'ailleurs ce qu'indique SEBBANE Alexandre, le responsable de cette extension, sur la page d'accueil du projet (« only ONE dump/hour max»).

Contourner la limite d'1 sauvegarde/heure

Dans le script extension/bpce_backupbdd/cronjobs/ backup_bdd.php, il faut effectuer les modification suivante:

22         $dbhost=$ini->variable( 'DatabaseSettings', 'Server' );
23         $dbuser=$ini->variable( 'DatabaseSettings', 'User' );
24         $dbpass=$ini->variable( 'DatabaseSettings', 'Password' );
25         $dbname=$ini->variable( 'DatabaseSettings', 'Database' );
26         /*$backupFile = $vardir."/log/".$dbname ."_". date("Y-m-d-H")."00". '.sql';*/  <== COMMENTER CETTE LIGNE 
27         $backupFile = $vardir."/log/".$dbname ."_". date("Y-m-d-H-i"). '.sql';   <== AJOUTER CETTE LIGNE (ON AJOUTE LES MINUTES AU NOM DU DUMP)
..
..
..
50         $iscluster=$fileini->variable( 'ClusteringSettings', 'FileHandler' );
51         if( ( $iscluster=="eZDBFileHandler" ) ){                                          <=== SI MODE CLUSTER
52             $dbhost=$fileini->variable( 'ClusteringSettings', 'DBHost' );
53             $dbuser=$fileini->variable( 'ClusteringSettings', 'DBUser' );
54             $dbpass=$fileini->variable( 'ClusteringSettings', 'DBPassword' );
55             $dbname=$fileini->variable( 'ClusteringSettings', 'DBName' );
56             /*$backupFile = $vardir."/sql/".$dbname ."_". date("Y-m-d-H")."00". '.sql';*/  <=== COMMENTER CETTE LIGNE
57             $backupFile = $vardir."/sql/".$dbname ."_". date("Y-m-d-H-i").'.sql';   <== AJOUTER CETTE LIGNE (ON AJOUTE LES MINUTES AU NOM DU DUMP)

Ensuite, dans le script extension/bpce_backupbdd/modules/backupbdd/ list.php faire les modifications suivantes:

17         if ($extension != 'gz') continue;
18         $i++;
19         $date_save=explode("-",substr($filename,-20));  <=== ICI ON PASSE DE 15 à 20 CARACTERES
20         /*$savebdd_timestamp=mktime($date_save[3]/100, 0, 0, $date_save[1], $date_save[2], $date_save[0]);*/ <=== COMMENTER CETTE LIGNE
21         $savebdd_timestamp=mktime($date_save[3], $date_save[4],0, $date_save[1], $date_save[2],$date_save[0]);   <== AJOUTER CETTE LIGNE

Résultat final

Après modifications, il devient possible de réaliser une sauvegarde toutes les minutes par le biais d'une tâche cron.

Par ailleurs, voici à quoi ressemble l'affichage des résultats:

  • Avant modifications:

    Les dates et heures affichées correspondent aux dates et heures auxquelles on clique sur le lien Liste des sauvegardes (lien Dump List figure 2).

    Les nom des fichiers de sauvegarde sont du type: [nomDuSiteaccess ]_2010-02-24-1600.sql.gz où 1600 signifie 16h00

  • Après modifications:

    Les dates et heures affichées correspondent à celles de la réalisation du fichier de sauvegarde (dump).

    Les nom des fichiers de sauvegarde sont du type: [nomDuSiteaccess ]_2010-02-27-21-29.sql.gz

Version améliorée de l'extension

Je mets à votre disposition une archive prête à l'emploi de l'extension bpcs_backupbdd. Cette archive est réalisée à partir d'une version 4.2.0 de eZ Publish.

Cette archive contient toutes les modifications abordées dans cet article plus d'autres concernant l'agencement des informations et l'aspect cosmetique de l'interface graphique. La francisation, bien que complète, n'utilise pas de fichier de traduction. Les textes sont donc écrits en dur dans les différents fichiers et templates.

:
Lisez bien les quelques lignes d'explications du fichier README.

Commentaires