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

  • 2

    Bonjour,
    je viens de passer mes sites spip en v3 (j’étais en v2), et j’ai donc mis à jour tous mes plugins.
    J’utilise maintenant la version1.06 de ce plugin.
    Malheureusement, bien que je clique sur ’Sauvegarder toutes les tables’, ce plugin ne sauvegarde que les tables du site en question, et non pas les tables des autres sites mutualisés, ni les tables supplémentaires, ce que faisait l’ancienne version!
    Donc, si ce plugin ne fait rien de plus que ce que fait par défaut spip, quel est son intérêt?
    Lorsque l’on clique sur ’Sauvegarder toutes les tables’, merci de sauvegarder toutes les tables de la base de données.
    Merci,
    Chris.

    • L’intérêt principal de ce plugin est de générer automatiquement des sauvegardes au format dump MySQL donc utilisables avec tous les outils MySQL et en particulier PhpMyAdmin (contrairement aux sauvegardes SPIP).
      Pour ce qui est de la sauvegarde des tables non SPIP, la version 1.1.1 sortie ce jour rétabli la possibilité de les sauvegarder (décocher l’option “Sauvegarder toutes les tables de SPIP” pour les choisir).

    • Bonjour,
      Je viens de mettre à jour avec la version 1.1.2, et on peut maintenant en effet sélectionner toutes les tables dans le menu ’Sauvegarder la base’, mais pas dans le menu de configuration du plugin.
      Encore un petit effort, et ce sera parfait.
      Merci.

    Reply to this message

  • 3

    choix du répertoire de sauvegarde
    Sur un SPIP 3 + saveauto, il n’y a apparemment plus la possibilité de choisir le répertoire de sauvegarde…
    Sur mes sites en SPIP 2, je mettais ça toujours dans un répertoire spécifique en dehors de top : je trouvais ça plus clair et moins… dangereux car des vidages un peu brutaux de tmp, ça peut arriver !
    Y-a-t-il un moyen de pouvoir choisir une destination ?
    Merci d’avance

    • Ouppps, petite erreur de frappe dans mon message ci dessus :
      il fallait lire
      Sur mes sites en SPIP 2, je mettais ça toujours dans un répertoire spécifique en dehors de tmp/ (et pas : en dehors de top )

    • la version 1.1.1 sortie ce jour rétabli la possibilité de choisir le répertoire dans lequel stocker ses sauvegardes.
      Attention! ce répertoire doit exister et être accessible en écriture par le serveur.

    • Super !
      Merci beaucoup !

    Reply to this message

  • 1
    jacques83300

    Bonjour,

    je viens de m’apercevoir que la sauvegarde automatique installée sur mon site ne fonctionnait pas (ou plus). Le répertoire tmp/dump est vide.
    En lançant une sauvegarde manuelle, j’obtiens le message suivant :
    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 124256360 bytes) in /home/www/37ed00d3b7b4d8da7c19d082a00db6f8/web/plugins/auto/saveauto/v1.0.6/inc/saveauto.php on line 146

    Je suis sous Spip 3.0.11 et Sarka-Spip 3.2.32. La version du plugin est la dernière (1.0.6).

    Merci d’avance à qui pourra m’aider.
    Cordialement.

    • Pour ce problème ce sont les ressources du serveur (la quantité de mémoire pour ton compte) qui sont en cause. Pas d’autre solution que de trouver un hébergement qui est plus généreux.

    Reply to this message

  • Bonjour,

    Je ne comprends pas pourquoi j’ai plein de caractères bizarres après la récupération d’une sauvegarde dans phpmyadmin (5.5.32).
    Mon site est UTF8, la base aussi et le meta charset est bien UTF8 dans le header.
    Dans les tables de la base les caractères sont corrects mais pas l’affichage du site (public et privé).

    config : SPIP 3.0.11
    saveauto : 1.0.6 SVN [74715]

    merci
    dd

    Reply to this message

  • Bonjour
    Ce plugin ne fonctionne pas sur mes sites en Spip 2.1.23 et je nee comprends pas pourquoi.
    Un étonnement, d’ailleurs, pas de paramétrage possible ou visible du déclenchement de la sauvegarde.
    Version du plugin: 0.75
    Y aurait-il quelque chose à faire ou à vérifier?
    Merci

    Reply to this message

  • 1

    Je me demande si il n’y a pas un petit soucis avec saveauto 0.7.5
    -  D’une part, j’ai deux fois le même texte « Détermine à partir de combien de jours une archive est considérée comme obsolète et automatiquement supprimée du serveur. Mettez -1 pour désactiver cette fonctionnalité » pour l’item Fréquence de la sauvegarde : tous les  et l’tem Sauvegardes considérées obsolètes après :
    -  D’autre part, « l’item Sauvegarde déclenchée lors de la connexion d’un auteur » et ses boutons radios n’apparaissent pas chez moi (SPIP 2.1.10 [17657])
    J’ai zappé qqchose ?

    • Stéphane

      Même soucis de mon côté sur un SPIP 2.1.20 [20327] avec le script en 0.75.
      Je n’ai pas le choix “Sauvegarde déclenchée lors de la connexion d’un auteur” donc pas de sauvegarde de générée.
      Avez-vous résolu le soucis ?

    Reply to this message

  • 1

    Comment l’heure de la sauvegarde est-elle définie ? Est-ce que cela correspond à l’heure où l’on active la sauvegarde automatique ?

    Ca serait une fonction intéressante à ajouter pour permettre les sauvegardes la nuit.

    • Autre question, il est stipulé que l’on peut choisir où la sauvegarde se fait, sauf que sous SPIP 3, je ne vois nullement la trace d’un tel choix.

    Reply to this message

  • Je rencontre un drôle de souci : en faisant une migration de sites, je m’aperçois d’une chose étrange. Si j’importe dans phpmyadmin un base exportée par saveauto, je me retrouve avec des � un peu partout. La même base restaurée en utilisant le fichier .sql généré par le phpmyadmin du serveur “source”, l’importation se déroule sans souci (=par de souci avec les caractères accentués)... Quel est ce mystère mystérieux ?

    Reply to this message

  • joseph-tux

    Bonjour,

    ce plugin est bien tentant, surtout avec le bug de spip 3 qui refuse de sauvegarder 4 tables, et son exigence de nécessiter SQLite.

    Malheureusement, je cale encore sur la question de sa restauration ( ou de son déplacement vers une autre base ): chez 1&1 l’utilisation de phpmyadmin limite fortement la dimension de la base à restaurer, et je n’ose pas entreprendre une restauration table par table !

    Sauriez-vous nous donner la configuration ou les commandes adaptées à la restauration de la base sauvée avec ce plugin, soit via phpmyadmin , soit autrement ?

    Reply to this message

  • 3

    Bonjour à tous,

    J’ai fait des erreurs de manipulation sur un site sur lequel j’ai souhaité effectuer la mise à jour vers Spip 3.0 mais que je n’ai pas moi même mis en place.
    Le site est planté car il semblerait que certains plugins ne soient pas compatibles ou qu’un problème existe avec le version de PHP utilisé par mon hébergeur. Je suis revenu sur Spip 2.0 mais ne dispose pas d’un backup exploitable par Spip assez récent.
    J’aimerais donc utiliser ces fichiers générés par Saveauto pour retrouver le contenu du site. Il s’agit de fichier en .sql.
    Comment puis-je les exploiter ?
    Il suffit de me connecter à MySql et de charger ce document portant la date que je souhaite retrouvée?
    Va t-il remplacer la base de données existante automatiquement ?

    Notez que j’ai très peu de connaissances PHP et MySql, je suis un débutant.

    Merci pour votre temps et pour vos réponses.
    Stéphane

    • Préalable indispensable pour la suite: tu ne précise pas si les sauvegardes de saveauto dont tu dispose ont été faites avec exactement la même version de SPIP que tu as réinstallé (en SPIP 2.0) alors je suppose que oui...

      Pour restaurer une sauvegarde saveauto il faut:
      - te connecter au phpmyadmin de ton site et sélectionner la base de ton SPIP dans le volet de gauche
      - choisir l’onglet “Importer”
      - à l’aide du bouton “Parcourir” du champ “Emplacement du fichier texte” sélectionner la sauvegarde que tu veux restaurer puis valider avec le bouton “Executer”
      - pour éviter les mauvaises surprises, une bonne pratique consiste à vider totalement par FTP le dossier /tmp/cache et supprimer tous les fichiers .php de /tmp

      A partir de là ta sauvegarde va remplacer totalement les tables de SPIP ce qui devrait te remettre à l’identique du jour où elle a été faite.

    • Merci beaucoup pour cette réponse.

      Il s’agit effectivement de la même version de SPIP, j’ai réinstallé la version 2.0 qui était utilisée avant la tentative de migration vers SPIP 3.0 et les sauvegardes de saveauto ont été faites sous cette précédente version de SPIP 2.0.

      Merci encore !

    • Bonjour,

      Je ne comprends pas du tout. Après avoir réinstallé la version de SPIP correspondant à la version de mes documents saveauto et après avoir réstauré la base de données, l’espace privé est inutilisable en raison de messages d’erreurs que je ne comprends pas du tout (SQL error 1052, SQL error 1052, SQL error 1054)

      Je ne comprends pas du tout d’où vient le problème.

      Merci encore !

    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