Sauvegarde automatique de Dotclear2, troisième essai (transformé cette fois-ci ?)
Par ȷulmud le mardi 18 novembre 2008, 21:50 - Free the code! - Lien permanent
Mea culpa maxima : dans les versions précédentes de mon script de sauvegarde automatique de Dotclear2 une grosse bogue se cachait. Je croyais que la sauvegarde exportait également les tables créées par des greffons (meta ou alias par exemple), alors que ce n'était pas le cas.
Voici donc une nouvelle version qui corrige cette fois-ci réellement cette exportation de tables supplémentaires. (Et, en cadeau bonus, une nouvelle fonctionnalité.)
À quoi cela sert-il ?
Afin d'éviter de récrire la roue, je vous conseille la lecture de cet article du Petit DotClear illustré pour apprendre comment utiliser et installer ce script. Il n'y a en effet qu'une seule différence d'utilisation entre la version pour Dotclear1.2 et cette version pour Dotclear2 :
- au début du fichier, il est nécessaire d'indiquer l'identifiant du blog que l'on souhaite sauvegarder.
Quelle est la nouveauté ?
Dans cette nouvelle version, si vous précisez full_export
comme identifiant du blog au début du fichier, vous obtiendrez un export complet de la base de données Dotclear (de tous les blogs et y compris les utilisateurs).[1]
Pré-requis
- Ce petit outil nécessite bien entendu la présence du greffon importExport.
- Cet outil s'attend également à ce que le dossier cache existe et soit accessible en écriture.
Où est-ce que je le trouve ?
Si vous êtes intéressé par ce script, il ne vous reste plus qu'à le télécharger dans les annexes à ce billet.
Note finale
Pour expier cette faute qu'il m'a fallu tant de temps pour repérer et réparer, je vais me flageller avec des orties fraîches toute la nuit... enfin... dès qu'on recommencera à trouver des orties fraîches.[2]
Notes
[1] Note pour les administrateurs de sites multiblogs / multirédacteurs : je vous conseille vivement de désactiver l'interprétation de code PHP dans les dossiers public des blogs. Car sinon, avec ce script, il devient extrêmement facile à n'importe quel rédacteur d'obtenir une copie complète de tous les blogs qui sont hébergés sur votre serveur.
[2] Et avec un peu de chance, d'ici là vous aurez oublié ma promesse !
Commentaires
Hello !
Super faudrait que je regarde une fois plus attentivement comment "tuner" mon dotclear ! Alors que je voulais passer à WordPress.
PS: il faut que tu me mail pour me convaincre
Bonjour,
Je dois m'y prendre comme une branche d'ortie en pleine canicule parce que je n'arrive pas à faire fonctionner le script
Côté FTP :
/dotclear
/dossiermonblog
/backup
/backup/dbbackup.php
.htaccess comprenant :
Options +Indexes
AddType x-mapp-php5 .php
<FilesMatch "^\.">
Order allow,deny
Allow from all
</FilesMatch>
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
</FilesMatch>
Une url pointe en racine et quand j'attaque le fichier de sauvegarde, j'ai l'affichage de mon blog sans la css !
Et oui oui, j'ai bien renseigné l'identifiant du blog en ligne 33 du fichier :
define('DC_BLOG_ID', 'dossiermonblog');
Pour ce qui est du chemin pour prepend.php, j'ai :
require_once dirname(FILE).'/../dotclear/inc/public/prepend.php';
J'ai merdé où ?
Merci.
brol : Le problème vient du chemin pour le prepend.php. Il ne faut pas pointer sur le fichier prepend.php se trouvant dans
inc/public
, mais celui qui est dansinc
tout court !Bouh ! Après la modif, j'ai "Erreur avec le fichier de dump".
Le code est compatible avec dc2.2 ? Y a-t-il une limite de poids de la bdd pour recevoir le dump (ma bdd pèse 17Mo) ?
Je précise être chez 1&1 mutualisé et que le plugin autobackup est installé.
Merci.
brol : Oui, c'est tout à fait compatible avec Dotclear 2.2 (pour preuve, c'est qu'il tourne sans aucun problème chez moi). Par contre, ce que ce message d'erreur indique, c'est très probablement que l'email n'a pas pu être envoyé (oui, le message lui-même n'est pas idéal...). Après l'appel au script, est-ce que le fichier
tmp_dossiermonblog.txt.gz
est bien créé dans le dossier de cache de Dotclear ? Y a-t-il des spécificités chez 1&1 pour l'envoi d'email ? Est-ce qu'un plugin comme emailNotification fonctionne chez cet hébergeur ?Le seul problème de taille qu'il peut y avoir, c'est si l'exportation prend trop de temps pour s'exécuter et que le script est alors tué par la gestion des ressources de l'hébergeur. Mais si l'exportation peut être effectuée manuellement via le plugin Import/Export, il n'y a (normalement) pas de raison que la taille pose un problème au script.
J'ai bien le fichier tmp_brol.txt.gz (3Mo) et EmailNotification fonctionne... C'est curieux tout ça ;\
brol : Bon, puisque le fichier temporaire est créé, c'est que l'export fonctionne bien, et c'est vraiment l'envoi du message qui ne fonctionne pas. Essayons une autre approche... Qu'est-ce que cela donne si vous modifiez la ligne suivante (normalement, la 142ème) :
par (ajout de
::sendMail
) :