Sauvegarder SPIP

En cas de panne informatique du serveur (ce qui n’arrive pas plus souvent que pour une voiture ;-), il est tout de même intéressant d’avoir récupéré les informations saisies dans l’interface du site, et publiées comme contenu.

Sauvegarder votre SPIP signifie avoir des copies utilisables de :
- la base de données (un dump SQL ou SQLite)
- les squelettes (l’ensemble du dossier ./squelettes)
- les documents annexés (le contenu du dossier ./IMG)
- des fichiers spéciaux (mes_options ou mes_fonctions mis dans ./config, divers .htaccess du dossier principal..)
- sans oublier la listes des plugins et leurs configurations actives...

- avez-vous vos codes et mots de passe (de la base de données, du FTP, de votre utilisateur favori, et de celui déclaré webmestre ?

Ce sont les éléments indispensables pour pouvoir re-installer votre site, avec un SPIP de même version au démarrage, sur le serveur ou sur un autre, externe ou en local sur un PC.

 
 
 
 
 
 
 
 
 
 
 
 

Insistons d’abord sur l’ensemble des données nécessaires pour sauvegarder votre site : il arrive trop souvent que des utilisateurs sauvegardent seulement les fichiers squelettes en oubliant :
- la base de données (gérée de facon externe : prendre un dump)
- les pièces jointes (les fichiers sous l’arborescence ./IMG/

 Exportation pour consultation externe


La première technique de sauvegarde à laquelle vous pouvez penser, est plutot une solution alternative de consultation, c’est en fait d’exporter le contenu du site : selon vos besoins, vous pourriez préférer une sauvegarde par capture extérieure (aspirateur de site), par export du "cache" [1] ou un export en "Livre" ou fichier au format PDF.
Mais sachez que si vous voulez ré-utiliser les données des articles et pages écrites,..... ce sera un "puzzle" infernal : préférez la solution suivante  !

 Sauvegarde des données


Spip propose comme tout programme informatique sérieux une sauvegarde complète des données dans l’interface privée de gestion.
Mais vous pouvez facilement y rajouter des options, qu’il s’agisse d’une sauvegarde sous un format différent (XML) ou au format standard SQL (utilisable par phpmyadmin), ou bien d’avoir des facilités d’accès de votre sauvegarde sans passer par FTP, ou même de la recevoir automatiquement par mail, au moins tant que le contenu ne dépassera pas les capacités du mail : un certain nombre de plugins sont disponibles sur la zone, pour vous y aider !

Nota Bene. : Sur un site installé, faites attention au préfixe [2] des données des tables..

 Une sauvegarde de la base de données

Souvent, des utilisateurs indiquent qu’ils ont (par précaution) copié la totalité du site par FTP : ils ont malheureusement oublié le principal, la sauvegarde des données : en effet, les textes des articles ne sont pas en fichiers dans le site, mais entreposés en base de données (Ce sont des fichiers d’un format spécifique, gérés sur un serveur externe à votre site, le plus souvent en MySQL, voire en PosteGreSQL ou SQLite).

A moins que vous n’ayez juste demandé explicitement une sauvegarde de la base dans l’interface privée [3], il vous manque le plus important, les données texte !

Trois formes possibles pour ces sauvegardes (et cela dépend de votre version de SPIP, du SGBD, et de votre "goût du risque") :
- un dump XML (généré par l’interface privée de SPIP (avant SPIP 3) en fichier texte XML ou en format xml.gz compressé), utilisable [4] exclusivement sous SPIP 2
- un dump SQL (généré par le plugin saveauto (à ajouter dans votre SPIP) ou votre action directe avec phpMyAdmin... ou équivalent : Adminer)
- un dump SQLite (généré par l’interface privée de SPIP 3 [5])
qui présente des limitations [6] aux seules tables "déclarées" à SPIP et ses plugins !

En SQLite, pour avoir l’équivalent de PhpMyAdmin vers votre serveur local , vous pouvez vous installer l’extension https://addons.mozilla.org/fr/firefox/addon/sqlite-manager/ sous FireFox, accessible dans le menu Outils ; en distant, vous poserez le scirpt adminer dans un répertoire protégé par htpasswd, ou bien vous utiliserez son intégration en plugin : voyez Contrib. !

Il existe un plugin expérimental sqlip_export, disponible en http://zone.spip.org/trac/spip-zone/browser/_plugins_/sqlip_export [7].

Un ’poc ’ [8] de création de dump MySQL au départ d’un spip SQLite, en squelette et avec des vrais morceaux d’itérateurs. Testé avec succès sur 3 bases variées en taille et en plugins. Partagé précocement pour cause de hIRCèlement :-p. Commentaires dans le mini plugin.xml.

Dernière minute : voyez aussi la solution (signalée par G.Vincent ) qui necessite Python : http://stackoverflow.com/a/13365275 (SQLite sur le Carnet de Contrib).

Enfin, vous n’oublierez pas les squelettes spécifiques du site, ni la liste des plugins : celle-ci peut vous etre fournie par un dump de la page Configuration / Gestion des Plugins , ou bien vous pouvez utiliser la page additionnelle de http://contrib.spip.net/Lister-les-... pour obtenir un fichier texte au format paquet.xml...


 Restaurer SPIP

La méthode de restauration du Dump XML est la suivante :
- utiliser la version de SPIP qui correspondait à celle générée dans l’export (ex.. 2.1.10)
- mettre le fichier de backup dans tmp/dump
- importer via l’interface d’admin de SPIP
- Se connecter, vérifier
- Mettre à jour SPIP dans la même branche (ex. 2.1.15)

Nota. : si vous tombez en dépassement du "max_execution_time" rafraichissez simplement votre page de restauration en interface privée : Spip continuera....

Avant de passer à SPIP 3.0, il est recommandé de faire un backup SQL via phpmyadmin (ou adminer) : ce format est plus stable et générique, pour être réinstallé sur d’autres serveurs [9].

 Cloner un site

Sauvegarde d’un hébergement et restauration ailleurs, c’est ce qu’on appelle cloner un site ! Souvent pratiquée pour une recopie en local (voir Installer mon premier SPIP local sur PC), vous pouvez aussi le faire sur votre propre serveur d’hébergement [10] :
Recopier tout le dossier source (celui contenant spip.php, le dossier ./IMG des pièces jointes, et vos ./squelettes ;-)) dans un autre répertoire, dupliquer la base de données sous un autre nom et....

C’est la cata ! Lorsque j’ai voulu faire des modifications dans l’identité et dans les rubriques du site copié, ces modifs se sont faites sur les deux sites à la fois....

Pourquoi ? Quand vous copiez le dossier du site, vous avez copié tous les fichiers *.php de SPIP, y compris les fichiers dans ./config !!
Vous souvenez-vous que SPIP y enregistre les paramètres de connexion à la base de donnée du site (d’origine !) ?
- si vous avez transféré sur une installation locale, il est probable que SPIP réagira immédiatement en signalant une impossibilité d’accès à la base de données...
- si vous êtes resté sur le même serveur, vous accédez toujours aux tables d’origine !
Dans tous les cas, renommez ou effacez dans ./config les deux fichiers ./config/chmod.php et ./config/connect.php (en vérifiant éventuellement le prefix de jeu de tables, et relancer l’installation de SPIP en vous connectant par l’interface privée ( suffixer l’URL du site par ./ecrire/) : la chaine de connexion sera reconstruite, si vous fournissez les codes valides, mais cela ne supprime aucunement les autres éléments existant dans la base ; si vous spécifiez un préfixe ou une base inexistante, SPIP vous construit un nouveau jeu de tables [11]
Pensez aussi à vérifier un éventuel .htaccess qui aurait été recopié (en particulier les références au RewriteBase ou à un .htpasswd de protection lié à un Acces Restreint.

 Migration ou Fusion !

Autres solutions de sauvegarde : ré-intégrer les données d’un SPIP dans un autre (éventuellement vide au démarrage). Cettemanipulation entre deux SPI peut se faire avec deux outils : migration(de nursit) ou Fusion, sans oublier peut-etre Migrateur.
L’usage du plugin de Fusion permet meme de récupérer un site SQLite [12] sur place !

 Et les plugins !

Les plgins sont des addons de SPIP ; leur ré-installation n’est pas automatisée !
Deux points sont à prévoir :
- conserver la liste des plugins à restaurer (voire leur n° de version)
- restaurer leur paramétrage : pour ce second point, sauf exceptions les configurations sont généralement enregistrées dans la base de données de SPIP dans la table des metas. Toutefois la ré-importation de cette table nécessite d’avoir activer tous mles plugins utiles avant la restauration de la base de données exporté/sauvegardée.

De plus n’oubliez pas que la restauration d’une base SPIP remet les anciens comptes et mots de passe, en particulier celui de l’auteur n°1 ; vous ne serez pas surpris que SPIP puisse vous demander de vous-ré-authetifier après restauration, sans oublier l’astuce de recréation de laccès en auteur 1° webmestre en supprimant les fichiers ./config/connect.php et ./config/chmod.php ...

 Quelques limitations de Dernière Minute !

Attention a quelques limitations techniques que vous pourriez rencontrer : votre serveur Apache/Php est généralement configuré pour limiter la taille/durée d’une exécution....

Concretement, cela peut signifier :
- que vous ne pourrez pas télécharger un trop gros dump (souvent limité a 2 ou 4Go)
- que votre restauration s’interrompra au bout de quelque temps (une exécution php est souvent suspendue au bout de 30secondes [13]

Les contournements sont divers, si votre phpMyAdmin ne sait pas plus que SPIP importer votre sauvegarde (attention, ce ne sont pas les memes formes d’entrée), selon les causes et messages annoncés :
- utiliser un programme php spécialisé (pour pallier la limite de temps d’exécution d’un script)
- utiliser directement le gestionnaire de base de données pour importer
(appel de mysqld en ligne de commande sur le serveur : voir en connexion SSH)
- travailler avec des fichiers compressés permettra de by-passer la taille limitée de téléchargement
- sinon décomposer votre dump avec des outils ’tout faits’ via sourceforge, qui intègrent un head/tail recompilés pour une plateforme Win32, ce sont les outils gnuwin32, disponibles à l’adresse http://gnuwin32.sourceforge.net/
Et attention aussi aux problèmes de codage-encodage UTF-8 etc...

Pour les Outils utilisables, voir les liens ci-dessous, et S’orienter pour des plugins utilitaires SPIP 2 utilitaires à ajouter à votre SPIP [14].


Merci de nous signaler les coquilles ou erreurs qui figureraient dans cette page.

[1Solution spéciale, plutot réservée aux experts techniques pour des besoins spéciaux..

[2$prefix ou mieux : $GLOBALS[’table_prefix’] = ’spip...’ ;

[3SPIP enregistre la sauvegarde dans ./tmp/dump, à vous de copier ce résultat par FTP !

[4Ce DumpXML posait souvent des soucis de ré-utilisation, et meme pour son obtenion : timeout !

[5Uniquement utilisable avec SPIP3 et PHP5 (et encore buggué sur les bases SQLite avec prefix, donc non garanti sous MySQL) !

[6Voir par exemple sur le forum.spip.net..

[7Pour récupérer le Zip directement sur la zone, voyez le zip !

[8Prrof of Concept !

[9En particulier certains plugins pourraient perturber les sauvegardes réalisées...

[10Attention à bien paramétrer le jeu de tables en BdD : voir la suite..

[11C’est la solution facile pour se recréer un accès Administrateur, si vous avez perdu votre login de connexion et la réception du mail associé : effacer ./config/connect.php !

[12La gestion des SPIP-SQlite avec prefix semble présenter un bug jusqu’à la 3.0.17, qui peut empêcher le déroulement correct des sauvegardes..

[13Voyez comment procède spip_loader en se rechargeant pour faire aboutir le travail au-dela de toute durée limite... Bravo Cerdic

[14Réservé aux Webmestres !


Liens visibles seulement pour les inscrits.

Article publié le 21 janvier 2012, et actualisé en mars 2017 .

Répondre à cet article