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 façon externe : prendre un dump, ou un export),
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" [2] 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 [3] 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, de Sauvegarder sa base de données SPIP : 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 [4], 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 [5] 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 depuis SPIP 3 [6])
qui présente des limitations [7] 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 https://zone.spip.net/trac/spip-zone/browser/_plugins_/sqlip_export [8].
Un ’poc ’ [9] 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 : https://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 https://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 [10].
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 [11] :
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 [12]
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 [13] sur place !
Et les plugins !
Les plugins 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 mêes 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é-authentifier après restauration, sans oublier l’astuce de recréation de l’accè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....
Concrètement, 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 [14]
Les contournements sont divers, si votre phpMyAdmin ne sait pas plus que SPIP importer votre sauvegarde (attention, ce ne sont pas les mêmes 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 https://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 [15].
Article publié le 21 janvier 2012, et actualisé en mars 2021 .
Répondre à cet article