Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2012-02-07 06:37:14

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Exporter en choisissant le répertoire de destination (ligne ou local)

Bonjour,

En tant que super-admin d'un multiblog, je cherche le moyen de pouvoir effectuer un export complet (tous les blogs d'un multiblog) ou partiel (le blog actif dans l'admin) tout en pouvant choisir le répertoire de destination du Zip en ligne ou en local.

Avec deux options :

-1- comme sait le faire actuellement le plugin importExport fourni avec Dotclear qui ouvre une boîte de dialogue permettant de choisir le répertoire local où le récupérer,
-2- en le plaçant dans un répertoire en ligne dûment protégé par le .htacces kivabien (dans le cache de DC2 par exemple).

L'option 2 permettrait alors de télécharger manuellement ce Zip par FTP, sans la contrainte de la limite des 8 Mo imposée par mon hébergeur...

Merci de vos idées et suggestions...

(J'ai vu qu'il existe un plugin sur le lab : "AutoBackup". Je souhaite éviter tout automatisme et/ou backup programmé)

Dernière modification par Mirovinben (2012-02-07 06:42:38)

Hors ligne

#2 2012-02-07 08:01:30

zeiram
Membre
Inscription : 2004-06-27
Site Web

Re : Exporter en choisissant le répertoire de destination (ligne ou local)

Personellement (mais je ne suis probablement pas très objectif), j'aurais tendance à utiliser le script dbbackup. Il suffit alors d'appeler l'URL qui va bien pour démarrer le backup souhaité. En cas de besoin, il est facile d'adapter le script pour qu'il accepte l'identifiant du blog à sauvegarder via un paramètre.

(De plus, à l'époque où j'avais regardé, AutoBackup était incapable de sauvegarder les données des tables créées par des plugins.)


« Y a des jours où faut pas m'chercher !! Et y a des jours tous les jours ! »

Hors ligne

#3 2012-02-07 10:02:07

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Exporter en choisissant le répertoire de destination (ligne ou local)

zeiram, je regarde ça... Merci !

Hors ligne

#4 2012-02-07 10:07:35

zeiram
Membre
Inscription : 2004-06-27
Site Web

Re : Exporter en choisissant le répertoire de destination (ligne ou local)

J'ai oublié de préciser : le script envoie le résultat du dump par email, mais il est facile de l'adapter pour ne faire qu'écrire le fichier dans un dossier spécifique.


« Y a des jours où faut pas m'chercher !! Et y a des jours tous les jours ! »

Hors ligne

#5 2012-02-07 12:06:30

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Exporter en choisissant le répertoire de destination (ligne ou local)

zeiram a écrit :

J'ai oublié de préciser : le script envoie le résultat du dump par email, mais il est facile de l'adapter pour ne faire qu'écrire le fichier dans un dossier spécifique.

C'est ce que j'ai vu en parcourant rapidement ton script. Comme je suis en mode "flemmard" (ou hibernation) je m'interroge sur le fait d'essayer de te demander de faire cette adaptation. Mais je suis un grand timide, donc je ne te demande pas.

A moins que...

Hors ligne

#6 2012-02-07 13:45:23

zeiram
Membre
Inscription : 2004-06-27
Site Web

Re : Exporter en choisissant le répertoire de destination (ligne ou local)

De mon côté, je suis un peu franchement en mode sous l'eau ces temps-ci... Donc, en vitesse (et surtout sans test), l'important se passe dans la fin du fichier :

require_importExport(); 

$file = DC_TPL_CACHE.'/tmp_'.DC_BLOG_ID.'.txt.gz'; 
backup_blog($file, DC_BLOG_ID); 
$backup_content = file_get_contents($file); 
$backup_content = gzencode($backup_content, 9); 
file_put_contents($file, $backup_content); 
$files[0]['file'] = $file; 
$files[0]['mimetype'] = 'application/x-gzip'; 
$files[0]['filename'] = 'dbdump_'.DC_BLOG_ID.'_'.date('Y-m-d').".txt.gz"; 

if (mail_attached($mail_to, $mail_from, $mail_subject, $mail_body, $files)) 
{ 
    print("Fichier de dump envoye"); 
    unlink($files[0]['file']); 
} 
else 
{ 
    print("Erreur avec le fichier de dump"); 
}

La ligne suivante définit où le fichier doit être écrit, à adapter selon tes souhaits :

$file = DC_TPL_CACHE.'/tmp_'.DC_BLOG_ID.'.txt.gz'; 

La fin du fichier depuis  "$files[0]['file']..." (y compris le bloc "if (mail_attached...") en fin de fichier est simplement à supprimer et à remplacer par :

print("Dump effectué");

« Y a des jours où faut pas m'chercher !! Et y a des jours tous les jours ! »

Hors ligne

#7 2012-02-07 14:30:04

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Exporter en choisissant le répertoire de destination (ligne ou local)

Merci d'avoir pris le temps de me proposer ce patch.

Petite question  avant de me lancer dans des tests : je souhaite avoir un zip directement exploitable par le plugin importExport en mode "import" sur mon ordi en local. Est-ce que je peux sans pb remplacer DC_TPL_CACHE.'/tmp_'.DC_BLOG_ID.'.txt.gz' par DC_TPL_CACHE.'/tmp_'.DC_BLOG_ID.'.zip' ?

N'étant pas familier de la gestion des types de fichiers par un serveur, j'ignore si un simple changement d'extension permettra d'appeler la bonne bibliothèque PHP et d'obtenir la compression souhaitée...

Hors ligne

#8 2012-02-07 14:40:30

zeiram
Membre
Inscription : 2004-06-27
Site Web

Re : Exporter en choisissant le répertoire de destination (ligne ou local)

Réponse rapide : pour passer en zip, a priori, non. Mais il faudrait aller lire en détail le code du module ImportExport de Dotclear pour savoir ce qu'il en est (c'est lui qui gère cela, et non pas mon script).

Et chez moi (de mémoire), je mets les .txt.gz dans le répertoire public pour les recharger avec le module ImportExport ; il semble donc être parfaitement capable de les digérer en entrée. (À vérifier avec un test toutefois.)


« Y a des jours où faut pas m'chercher !! Et y a des jours tous les jours ! »

Hors ligne

#9 2012-02-08 10:55:10

Mirovinben
M comme Mathusalem
Lieu : Dole (Jura)
Inscription : 2007-02-06
Site Web

Re : Exporter en choisissant le répertoire de destination (ligne ou local)

Je viens de tester en local après avoir fait quelques modifs (celles que tu m'as proposées et d'autres essentiellement d'ordre "cosmétique") puis en ligne...Ca fonctionne très bien.

zeiram a écrit :

Réponse rapide : pour passer en zip, a priori, non.

".txt.zip" semble bien accepté.

zeiram a écrit :

Et chez moi (de mémoire), je mets les .txt.gz dans le répertoire public pour les recharger avec le module ImportExport ; il semble donc être parfaitement capable de les digérer en entrée.

Ça ne fonctionne pas chez moi en local (DC2 v2.4.1.2 + Seven  + Wamp) :

-1- le module ImportExport ne voit pas le fichier (boîte déroulante vide) alors que le fichier est bien présent dans la racine du répertoire public et est visible depuis le gestionnaire de média.
-2- il refuse les formats de fichier "*.txt.gz" et "*.txt.zip" si je passe par mon chemin habituel ("Charger un fichier de sauvegarde" + bouton "Parcourir"). Seul un fichier *.txt sera accepté

Pas gênant pour moi, il me suffit de décompresser au préalable et de placer le *.txt à l'endroit habituel. Et tout roule...

Merci de m'avoir aidé. Me reste plus qu'à réactiver la partie "envoi par mail" et je suis momentanément comblé :-)...

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map