offline

Désolé, vous ne semblez pas être connecté.

spipBackup, pour des sauvegardes faciles et complètes de sites SPIP ou SPIP-Agora

Quel webmestre n’a jamais eu de sueurs froides en s’appercevant que le serveur ne fonctionnait plus, ou que la base de données était corrompue ? Faire des sauvegardes régulières des contenus d’un site est plus que nécessaire, surtout si ces contenus sont gérés directement en ligne1 et que la plateforme d’hébergement ne prend pas en charge ces sauvegardes.

Quelles sont les données à sauvegarder ?

  • les données de la base ne pouvant être reconstruites à partir d’autres données, c’est à dire finalement toutes les tables sauf celles d’indexation
  • les documents attachés aux articles ou rubriques, c’est à dire le répertoire IMG/ au complet

Installation de l’outil de sauvegarde

L’exécution de ce script requiert les composants PEAR suivants2 :

Le composant suivant est optionnel :

Il suffit ensuite de télécharger le script présent dans le Zip suivant :

spipBackup-1.0.0.zip

Ensuite, il faut configurer le script en l’ouvrant dans n’importe quel éditeur, comme expliqué dans la section suivante, puis de le placer à la racine du site SPIP auquel il est destiné.

Configuration

Le début du script est à modifier en fonction de la configuration de la base de données et des options d’utilisation choisies.

Le code présent initialement correspond à ce que l’on trouve en général sur les installations par défaut pour MySQL.

// Directory where the files will be created
define('DIRECTORY', 'backup');
define('ARCHIVE_PREFIX', 'mon_site_spip');

// Database connection parameters
define('BASE_HOST', 'localhost');
define('BASE_NAME', 'spip');
define('BASE_USERNAME', 'root');
define('BASE_USERPASS', '');

// Number of archives to keep (0 for all)
define('ARCHIVES_NUMBER', 2);

// Use visualy improved version
define('VISUAL_FRIENDLY', false);
Constante Rôle
DIRECTORY Répertoire dans lequel doivent être placées les sauvegardes
ARCHIVE_PREFIX Préfixe des noms de fichier des sauvegardes
BASE_HOST Serveur sur lequel se trouve la base de données
BASE_NAME Nom de la base de données
BASE_USERNAME Utilisateur de la base de données
BASE_USERPASS Mot de passe de l’utilisateur de la base de données
ARCHIVES_NUMBER Nombre de fichiers d’archive à conserver. En mettant 0, on retire la limite.3
VISUAL_FRIENDLY Utilisation de l’interface plus riche indiquant la progression des actions

Utilisation

Voici un apperçu de l’interface de l’outil :

L’interface de l’outil

Son utilisation est normalement intuitive …

  1. Et encore plus pour les données de type forums, statistiques, etc. ⬆︎

  2. Une version purement SPIP sans nécessité de ces composants externes est à l’étude … ;) ⬆︎

  3. Pour éviter de surcharger le disque dur, il est vivement recommandé de ne pas conserver trop de fichiers d’archives. ⬆︎

Si vous voulez signaler une erreur ou proposer une modification de ce texte, n'hésitez pas à l'éditer directement à la source sur Github.

5 commentaires

  • Laurent Laville vient de sortir une version largement modifiée de HTML_Progress, HTML_Progress2, qui contient notamment une classe HTML_Progress2_Lite qui ne nécessite pas d'avoir PEAR.

    Sans doute un bon moyen de rendre se script moins contraignant pour la majorité des utilisateurs de SPIP.

  • Merci pour ce chouette module anti-panique !

    Juste une question simpliste (j'ai presque honte) : comment restaure-t-on ?

  • Pour la restauration, ce n'est malheureusement pas encore automatique, il faut passer par un chargement SQL technique, via phpMyAdmin par exemple.

    Mais attention, j'ai découvert hier que les scripts SQL générés ne contiennent pas de " ;" à la fin de l'instruction de création de table, il faut l'ajouter.

  • Ok, alors si ce doit être fait manuellement, garder à l'esprit que phpMyAdmin subit les limitations PHP de taille max de fichier uploadé !

    On m'a récemment indiqué un moyen très simple en ligne de commande :
    C :\leRepDeMySQL>mysql -d spip -u spip < leFichierDeCommandesSQL.sql

    Si ça peut servir…

    Et pis pour les ; manquants, c'est pas grave, on va s'arranger ;-)

  • MySQL en ligne de commande, c'est en effet très pratique, mais c'est malheureusement rarement accessible sur des hébergements mutualisés…