Le plugin saveauto : sauvegarde automatique de la base de données de SPIP

Le plugin saveauto permet de réaliser automatiquement une sauvegarde de la base de données de SPIP selon une fréquence et des paramètres configurables.
Important! la version 0.5 (pour SPIP 2.*) ayant un gros bogue dans le déclenchement des sauvegardes, il est vivement conseillé de mettre à jour (au minimum version 0.5.1)

Un des soucis récurrent du webmestre d’un site sous SPIP c’est d’avoir la certitude qu’en cas de “crash” de son site (serveur planté, mauvaise manip...) il puisse récupérer l’ensemble des données de la base MySQL afin de pouvoir rétablir son site “à l’identique”.

Cela implique d’avoir une sauvegarde de cette base de données qui inclut tous les éléments saisis par les utilisateurs (articles, brèves, sites référencés, auteurs...) au fur et à mesure que ceux-ci enrichissent le contenu du site.

Alors si votre site est actif, à moins que vous ne soyez un forcené de la sauvegarde manuelle en utilisant l’outil intégré dans l’administration de SPIP, il y a fortes chances que votre dernière sauvegarde ne soit pas à jour...

Ce plugin, reprise d’une “vieille” contrib de Silicium (publiée à l’époque sur le site japanim.net), permet d’automatiser le processus de sauvegarde de votre base de données afin que vous n’ayez jamais à annoncer à vos rédacteurs que “...le serveur à planté, il va falloir refaire la saisie de vos n derniers articles...”.

1. Ce plugin permet :

  • de réaliser une sauvegarde complète de la base de données du SPIP selon une fréquence déterminée. Cette sauvegarde est au format .sql (ou gzippé si votre serveur le permet). Elle est totalement compatible avec le format des fichiers sql utilisés par votre phpmyadmin.
  • de paramétrer les tables à sauvegarder (ou au contraire à ne pas sauvegarder) : la sauvegarde étant réalisée au niveau de la base, par défaut elle comprend l’ensemble des tables (pas seulement celles de SPIP) mais vous pouvez configurer précisément les tables que vous désirez inclure dedans.
  • de stocker ces sauvegardes dans un répertoire de votre choix
  • d’envoyer les fichier de sauvegarde par mail à une adresse de votre choix
  • de configurer la “durée de vie” des fichiers de sauvegarde stockés

2. Installation du plugin saveauto :

En fonction de votre SPIP récupérez le zip correspondant sur https://plugins.spip.net/saveauto/, décompactez le et placez le dossier “saveauto_X_Y” obtenu dans votre répertoire /plugins (à créer à la racine de votre spip si nécessaire), rendez vous sur l’interface de gestion des plugins (menu Configuration > Gestion des plugins), cochez le plugin “saveauto” et validez.

Ce plugin ne modifie pas les tables de la base données de SPIP, il n’en crée pas de nouvelles : pour sa désinstallation complète, il suffira d’effacer le répertoire /plugins/saveauto.

3. Versions

Ce plugin existe en 4 versions : saveauto_1_9_2 pour spip 1.9.2, saveauto_2_0 pour spip 2.0.*, saveauto_2_1 pour spip 2.1.* et saveauto_3_0 pour spip 3.0.*.

[ v. 1_9_1 ]
Lorsque la configuration du plugin est modifiée (via l’interface d’administration) le fichier /plugins/saveauto/inc/saveauto_conf.php qui stocke le paramétrage des sauvegarde est réécrit : selon la configuration du serveur qui vous héberge, il sera peut être nécessaire de modifier ses droits afin que cette réécriture soit possible (en cas de problème vous en serez averti lors de la validation d’une nouvelle config par l’interface d’administration).


[ v. 1_9_2]
L’enregistrement de la configuration et l’interface de gestion de celle-ci est basé sur le plugin config (cfg). Ce plugin doit être installé et activé pour que saveauto_1_9_2 fonctionne. Ce plugin permet la sérialisation des données de configuration et leur enregistrement dans la table spip_meta (de cette façon il n’est plus nécessaire de gérer un répertoire à accès en écriture pour le serveur comme le fait la version saveauto_1_9_1).

[ v. 2_0]
Passage en version compatible SPIP 2.0.*. L’interface de configuration est désormais accessible via le menu Configuration > CFG > Saveauto (le bouton dans le menu à été supprimé vu s le peu de fois où il était utilisé dans la vie du site)

Pour l’instant pas d’incompatibilités repérées avec d’autres plugins (pas de surcharge des fichiers du core de spip).

[ v. 3_0]
Passage en version compatible SPIP 3.0.*.
L’interface de configuration est désormais accessible via le menu Configuration > Sauvegarde automatique avec de nombreuses nouvelles options (en particulier pour l’envoi par mail des sauvegardes).
Désormais dans la page Maintenance > Sauvegarder la base (ecrire/?exec=sauvegarder) il est possible de déclencher “manuellement” une sauvegarde et l’outil propose aussi:

  • une possibilité de déclenchement manuel
  • la liste des sauvegardes disponibles, téléchargeables

4. Fonctionnement obtenu lorsque l’on intègre ce plugin :

Les sauvegardes ne sont PAS déclenchées par un “programmateur” (spip_cron) mais sont lancées lorsqu’un utilisateur (auteur ou administrateur selon le paramètre “Sauvegarde déclenchée lors de la connexion d’un auteur”) se connecte dans l’espace privé. De cette façon tant qu’il n’y a pas d’accès à l’espace privé (cad que le contenu du SPIP ne change pas) il n’y a pas de création d’éventuels “doublons” des sauvegardes.

Interface de configuration et d’administration du plugin saveauto

En revanche à chaque connexion à l’espace privé, le script est lancé : il vérifie si le temps écoulé depuis la dernière sauvegarde est supérieur à la fréquence déterminée dans la configuration (paramètre “Fréquence de la sauvegarde”), et , si c’est le cas, crée un nouveau fichier de sauvegarde dans le répertoire indiqué par le paramètre “Répertoire de stockage” de l’interface d’admin.
Si l’option “Zipper le fichier de sauvegarde” est activée, le fichier sql généré est zippé (version 0.5.2 minimum).

Par défaut ces sauvegardes sont stockées dans le répertoire /tmp de votre SPIP, si vous modifiez ce paramètre vous devez vous assurer que le répertoire utilisé est autorisé en écriture pour le serveur (777 avec votre client FTP en général) et que le chemin (relatif à la racine de votre spip) indiqué se termine bien par un “/” (par ex. : /tmp/sauvegardes/).
Si vous utilisez un répertoire différent de celui par défaut, gardez à l’esprit que celui-ci devrait être sécurisé pour qu’il ne puisse pas être accessible depuis internet: les fichiers de sauvegardes contiennent l’ensemble des données des articles, rubriques, brèves publiés ou non (et là, pas question “d’accès restreint”...)

Si la configuration le précise (paramètre “Sauvegardes envoyées à l’adresse”) et si votre hébergement autorise la fonction mail() de php, le fichier de sauvegarde obtenu sera envoyé à l’adresse mail de votre choix. Il est conseillé d’installer le plugin Facteur pour ajouter le fichier de sauvegarde en pièce jointe.

En fonction du nombre de jours configuré dans le paramètre “Sauvegardes considérées obsolètes après”, le script va effacer les fichiers de sauvegardes dont l’âge est supérieur au nombre de jours configuré.

Les tables à sauvegarder (ou non) sont déterminées par les paramètres “Tables acceptées” et “Données ignorées” : par défaut le plugin sauvegarde toutes les tables (y compris celles qui n’appartiennent pas à SPIP) sauf celles dont le nom comprend “_index”, “_temp” ou “_cache” (qui sont utilisées par SPIP pour stocker des données volumineuses mais non-indispensables pour rétablir son intégrité : leur structure seule est sauvegardée).
De la même manière, le paramètre “Eléments à sauvegarder” permet de choisir (de façon globale) si vous voulez sauvegarder la structure et/ou les données des tables (option réservée aux administrateurs maitrisant ces concepts : si cela ne vous parle pas, choisissez “oui” pour les 2 choix proposés dans ce paramètre!).

Pour finir avec les options configurables vous pourrez également préciser :

  • le nom de la base de données de votre SPIP : ce paramètre ne sert qu’à composer le nom des fichiers de sauvegarde (par défaut de la forme : “nom_base_spip_2006”). De façon complémentaire le paramètre optionnel “Préfixe pour les sauvegardes” permet de composer des noms de fichiers encore plus complets : ce qui peut donner des noms de la forme “prefixe_nom_base_spip_2006”.
  • si vous souhaitez qu’un message s’affiche lorsque la sauvegarde à été effectuée (à éviter si vous choisissez de faire déclencher la sauvegarde lors de la connexion des auteurs...)

5. Restauration des sauvegardes à partir des fichiers générés par le plugin :

[*Attention !!!*] les sauvegardes réalisées ne sont pas au format de celles de SPIP : Inutile d’essayer de les utiliser avec l’outil d’administration de Spip.

Pour toute restauration il faut utiliser l’interface phpmyadmin de votre serveur de base de données : dans l’onglet “SQL” utiliser le bouton “Emplacement du fichier texte” pour sélectionner le fichier de sauvegarde (cocher l’option “gzippé” si nécessaire) puis valider.

Les sauvegardes xxxx.sql.zip ou xxx.sql sont au format SQL c’est à dire qu’ils contiennent les commandes permettant d’effacer les tables existantes du SPIP et de les remplacer par les données archivées. Les données plus récentes que celles de la sauvegarde seront donc PERDUES!

6. Ce qu’il reste à faire:

  • la sauvegarde des données de la base est une chose, mais de plus en plus les sites sous SPIP ont toute une partie de leur contenu sous forme de fichiers “annexes” (images, pdf, sons, images...) qui sont stockés dans le répertoire /IMG : il serait donc intéressant d’avoir la possibilité de faire une sauvegarde de ceux-ci sous forme d’un fichier compressé qui serait transféré par FTP sur un autre serveur (je n’imagine pas l’envoi par mail vu le volume que cela représente !)
  • les fichiers de langues pour les utilisateurs ne causant pas le french

Comme pour beaucoup d’autres plugins, afin de faciliter le developpement collaboratif, vous trouverez l’ensemble des fichiers en cours sur le SVN de spip-zone : avis aux motivés !

Discussion

75 discussions

  • 11

    Bonjour,

    je ne parviens pas à installer le plugin : il apparait dans la liste des plugins, il est configurable avec cfg, mais l’icone n’apparaît pas dans le sous-menu du menu “configuration” de spip, et aucune sauvegarde n’a lieu dans le répertoire cible. J’ai tenté de modifier les droits sur les différents fichiers et dossier concernés, mais maintenant, je sèche... La version de spip est la 2.0.10, cfg 1.14.1, sarkaspip 3.0.1 et les plugins accès restreint et spip bonnux. Je suis chez OVH en mutualisé...
    Je ne trouve pas de situation identique sur ce forum. Si quelqu’un peut me donner une piste de recherche, ce serait bien ! Merci.

    • même si l’icône n’est pas présente dans le menu, as tu accès à l’interface de configuration du plugin en appelant directement son url: ....ecrire/?exec=cfg&cfg=saveauto ?

    • Bonjour, merci d’avoir répondu.

      Oui, j’accède à la page de configuration, que ce soit en appelant directement l’url ou en cliquant sur les outils de cfg au bout du nom du plugin dans la liste des plugins. Il y a aussi autre chose qui manque, et je ne sais pas si c’est normal : dans la page de configuration, il n’y a pas la ligne concernant la compression GZ du fichier de sauvegarde.
      Voilà, si vous pouvez m’aiguiller un peu sur une solution...
      cordialement

    • Après avoir regardé dans le détail, je m’aperçois que le pipeline qui déclenchait la sauvegarde a été modifié ce qui fait qu’effectivement la sauvegarde n’était plus jamais déclenchée!
      C’est corrigé par la version 0.5.1 (cf http://zone.spip.org/trac/spip-zone/changeset/36353) et vu le nombre de modifications je conseille vivement la mise à jour...

      En revanche:

      • la disparition du bouton “saveauto” dans le menu “Configuration” est voulue puisqu’il encombrait cet onglet alors que l’on ne s’en sert à priori qu’une seule fois dans la vie du site... cela date du passage en version 0.5
      • l’option de compression GZ étant boguée (sous sa forme “historique”) depuis des lustres, je l’avais viré lors de la dernière mise à jour
    • Bravo ! tout semble fonctionner maintenant.
      A part l’envoi du mail, mais je pense que le fichier est trop volumineux (7,3Mo) ?
      Du coup, comment faire pour que le fichier soit compressé ?

      Merci pour la réactivité !

    • birt974

      Bonjour,
      merci pour ce plug-in que je n’ai pas encore pu utiliser ...
      J’ai installé la version 0.5 mardi dernier, et évidemment pas de sauvegarde automatique. Je vois ce matin que des modifications ont été apportées et qu’une nouvelle version en découle. Seulement, je ne sais pas où trouver cette nouvelle version. Je vois bien les modif apportées, quand je clique sur le lien (vers spip-zone), mais après je ne sais pas quoi en faire. Faut-il recopier le code dans les fichiers déjà présents dans mon répertoire plug-in ?
      Pourriez-vous m’éclairer sur l’utilisation de spip-zone et du versioning ?
      Merci bien.

    • Seulement, je ne sais pas où trouver cette nouvelle version.

      Utilisez simplement le lien de téléchargement qui se trouve sur cette page...

    • le zip disponible via le lien de cette page (http://files.spip.org/spip-zone/sav...) est généré automatiquement donc à jour de la dernière version.

      Pour mettre à jour le plugin de la façon la plus “propre”:

      • désactiver le plugin saveauto existant via l’interface de gestion des plugins
      • effacer le répertoire /plugins/saveauto via FTP
      • récupérer le zip de la dernière version et le dézipper dans un coin de ton ordi
      • transférer par FTP le dossier /saveauto obtenu dans le dossier /plugins du site
      • réactiver le plugin
    • birt974

      Merci pour cette réponse rapide.
      J’avais déjà désactivé le plug-in, télécharger la (nouvelle ?) version en cliquant sur le zip en lien en haut de la page, dézippé tout ça dans mon dossier plugin en ayant préalablement supprimé l’ancien dossier.
      Je pensais que je n’avais pas la bonne version, car quand je vais sur ma gestion des plugin, sauvegarde automatique, les infos sont toujours les suivantes : Version : 0.5 [35134], est-ce que j’ai faux ?
      Ensuite, y-a-t il un moyen de tester si le plugin est bien installé ? Style, taper une url pour voir si la sauvegarde se créé dans le dossier spécifié, sinon log d’erreur ... parce que mon dossier de destination a les droit 755 et je ne peux pas les changer avec mon client FTP (FileZilla) (mais c’est un autre problème).
      Merci encore.

    • birt974

      Je confirme, quand je télécharge le zip en lien, je regarde le contenu du fichier saveauto_fr.php, j’ai l’ancien code, celui marqué en rouge quand on regarde les modifs sur spip-zone.
      Peut-être un problème de cache ... je ne sais pas ... y-a-t il un autre endroit pour le télécharger ?
      Merci.

    • oui, c’est aussi un truc qui trainait depuis longtemps cette histoire de compression de la sauvegarde qui ne fonctionne sur aucun serveur...
      ALors la version 0.5.2 (cf http://zone.spip.org/trac/spip-zone/changeset/36389) remplace l’utilisation des fonctions gz natives de PHP par la libraire zip embarquée avec SPIP.

      A priori l’envoi des mails semble OK pour moi mais là dessus je ne ferais pas mieux pour l’instant vu qu’il faudrait brancher le plugin facteur si on voulait régler proprement cette question...
      Si quelqu’un est motivé pour s’en occuper, il est le bienvenu!

    • il faut regarder le fichier plugin.xml pour vérifier ta version mais pour moi il n’y a pas de problème, le zip en lien me donne bien “version 0.5.1”... et vu que je viens de faire une mise à jour, d’ici une heure ça devrait être la version 0.5.2 d’ailleurs!

      Pour vérifier que la sauvegarde fonctionne il suffit de regarder si elle est bien générée dans ton dossier sinon tu aura un message d’erreur au sommet de la page sur laquelle tu te trouve lors de la connexion à l’espace privé

    Reply to this message

  • 1

    grâce à la ligne

       if (! @mail('toto@truc.net', 'test envoi mail', 'le message de test')) {
    ... }

    je reçois tous les jours un message d’erreur mail comme quoi ’toto’ n’existe pas... est-ce vraiment incontournable ?

    sans cette ligne, ça marche très bien... mieux même !

    • grâce à la ligne if (! @mail(’toto@truc.net’, ’test envoi mail’, ’le message de test’)) ... je reçois tous les jours un message d’erreur mail comme quoi ’toto’ n’existe pas... est-ce vraiment incontournable?

      à priori ça fait partie des vieilleries qui traînent dans saveauto depuis l’origine et qui devraient disparaître dans la prochaine version... Donc pas de problème pour supprimer cette ligne si nécessaire!

    Reply to this message

  • Bonjour,

    il y a un soucis, quand on modifie les droits pour les admin pour que seulement le webmestre puisse faire une sauvegarde

    il y a quand même l’icône en haut à droit, si on clique dessus on a bien un accès refusé, mais je préférai pouvoir l’enlever pour que ça fasse plus propre

    comment je dois m’y prendre sachant que je pars de zéro niveau php...

    merci d’avance

    Reply to this message

  • 1

    Bonjour,

    J’ai eu un petit problème pour la détection de la compression .gz avec la librairie zlib sur mon site.

    La fonction zlib_get_coding_type() me renvoi faux alors que la compression est activée.

    J’ai donc remplacé cette ligne de code

    if ($gz_capable = zlib_get_coding_type())

    par

    if ($gz_capable = function_exists(“gzopen”))

    dans mes fichiers :
    -  saveauto_fonctions.php
    -  cfg_saveauto.html

    Peut-être que d’autre ont eu ce problème.

    Etienne

    • oui, c’est un vieux truc qui traîne depuis longtemps...
      A priori ça devrait disparaître dans la version “dépoussiérée” (en cours de codage...) au profit de l’utilisation des fonctions de zippage de PCLzip utilisées normalement dans SPIP.

    Reply to this message

  • Pierre Roger

    J’avais un message d’erreur en activation du plugin indiquant qu’il n’avait pas les permissions pour écrire.

    En mettant en 777 ce répertoire, je n’ai plus eu ce problème.

    Mauvaise interprétation de ma part : C’était le répertoire de sauvegarde qui n’était pas accessible et qui posait un problème et non pas le répertoire inc

    Désolé de cette confusion.

    Reply to this message

  • Pierre Roger

    Merci cy_altern pour ta réponse

    1) Pour la version 1.9.2, donner les droits sur le répertoire : plugins/saveauto/inc (chmod 777)

    heu... je ne vois pas à quoi peut bien servir ce chmod sur un répertoire à priori non utilisé en écriture... si tu as une raison précise je suis preneur !

    J’avais un message d’erreur en activation du plugin indiquant qu’il n’avait pas les permissions pour écrire.

    En mettant en 777 ce répertoire, je n’ai plus eu ce problème.

    Seuls les mots avec accents dans les listes pointant sur une ancre perdent leurs accents

    peux tu préciser ce qu tu entends par “dans les listes pointant sur une ancre” ?

    Il s’agit de la table des matières qui est organisé en liste (format spip - en début de ligne) et dont chaque ligne pointe sur une ancre

    Voir un exemple->http://www.arieda.fr/spip.php?article4]

    Par ailleurs, pour plus de précisions :
    -  la restauration est elle faite sur le même SPIP (même serveur + même installation de SPIP) que celui où a été fait la sauvegarde ?

    OUI en SPIP 1.9.2.H


    -  le SPIP est il en UTF8 ou en ISO8859-1 ?

    UTF-8

    Reply to this message

  • 1
    Pierre Roger

    Re-Bonjour,

    Je continue mes essais.

    1) Pour la version 1.9.2, donner les droits sur le répertoire : plugins/saveauto/inc (chmod 777)

    2) Les accents ne sont pas tous perdus malgré l’apparence dans le fichier SQL.
    Seuls les mots avec accents dans les listes pointant sur une ancre perdent leurs accents


    -  Pr�sentation
    -  Organisation du suivi
    -  Examens - Modalit�s particuli�res
    -  Demande de suivi ARIEDA

    Quand il s’agit d’une liste sans lien sur une ancre, les accents sont retranscrits correctement :

    * libéral pour les séances en cabinet

    * salarié pour les séances à l’école.

    Pour les autres accents, la restauration s’est bien passée :

    Selon le décret du 22 avril 1988, il est agréé en tant que Service d’Accompagnement Familial et d’Education Précoce (SAFEP) ainsi qu’en tant que Service d’Education Familiale et d’Intégration Scolaire (SEFIS). Les prises en charge sont financées par les caisses d’assurance maladie.

    Bizarre que dans le cas des listes pointant sur une ancre, il y ait une mauvaise interprétation !

    • 1) Pour la version 1.9.2, donner les droits sur le répertoire : plugins/saveauto/inc (chmod 777)

      heu... je ne vois pas à quoi peut bien servir ce chmod sur un répertoire à priori non utilisé en écriture... si tu as une raison précise je suis preneur!

      Seuls les mots avec accents dans les listes pointant sur une ancre perdent leurs accents

      peux tu préciser ce qu tu entends par “dans les listes pointant sur une ancre”?

      Par ailleurs, pour plus de précisions:
      -  la restauration est elle faite sur le même SPIP (même serveur + même installation de SPIP) que celui où a été fait la sauvegarde?
      -  le SPIP est il en UTF8 ou en ISO8859-1?

    Reply to this message

  • Pierre Roger

    Bonjour,

    Très bonne idée que ce plugin !!!

    J’ai installé la version 1.9.2 pour un site en Spip 1.9.2h,

    Tous les accents sont perdus dans la sauvegarde et elle devien donc inutilisable.

    Voici ce que cela donne :

    Selon le décret du 22 avril 1988, il est agréé en tant que Service d\’Accompagnement Familial et d\’Education Précoce (SAFEP) ainsi qu\’en tant que Service d\’Education Familiale et d\’Intégration Scolaire (SEFIS). Les prises en charge sont financées par les caisses d\’assurance maladie.

    Je n’ai pas encore fait les essais pour la version 2.

    Reply to this message

  • 2
    Perline

    Une toute petite erreur : dans le mail d’envoi : Sauvegarde de la base effectuée avec succès !
    une petite réparation des accents ?

    • heu... je dois être une vraie quiche en orthographe: je ne vois pas quel est le problème d’accents... tu ne veux pas préciser ?(ou commiter directement la modif dans le fichier de langue?)

    • Après suppression de la base puis restauration via phpadmin j’ai perdu aussi les accents.
      Ai-je loupé une marche ou une démarche dans l’installation de saveauto ?

    Reply to this message

  • oui : sur la page de téléchargement des plugins de http://files.spip.org/spip-zone/ tu pourra choisir entre la version 1.9.1 (!), la 1.9.2 et la 2.0.* qui est celle en lien dans l’article.

    Génial, trop cool, mortel, je l’installe tout de suite.

    Reply to this message

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom