Sauvegarde ou archivage du dossier data

Bonjour,

Voici un script qui archive des répertoires, des sous-répertoires et leurs fichiers dans un fichier compressé. Bref, bien pratique pour zipper le dossier data de PluXML et le sauvegarder.

Il n'est pas extraordinaire, je n'ai fait que modifier un script existant sans copyright ni left. Il requiert la librairie de phpMyAdmin zip.lip.php (si vous le trouvez pas, alertez-moi) :

<?
echo('<ol>');

// Inclusion de la librairie zip.lib.php de phpMyAdmin (pensez à préciser le chemin)
require_once("zip.lib.php");

// Nom et chemin du fichier zip à créer
$fichier_zip = '../archive/archive.zip';

$zip= new zipfile;

// Indication du chemin du dossier à zipper
$path = '../data';

function zipDir($path,&$zip)
{
if (!is_dir($path)) return;
if (!($dh = @opendir($path)))
{
echo("<li>Une erreur s'est produite sur : ".$path."</li>");
return;
}
while ($file = readdir($dh))
{
if ($file == "." || $file == "..") continue; // dossiers . et ..
if (is_dir($path."/".$file))
{ // Récursivité
zipDir($path."/".$file,$zip,$i);
}
elseif (is_file($path."/".$file))
{ // Si c'est un fichier à ajouter au zip
$zip->addFile(file_get_contents($path."/".$file),$path."/".$file);
echo('<li>'.$path.'/'.$file.' <small><i>ajouté</i></small></li>');
}
}
}
zipDir($path,$zip);

// Récupération du contenu du zip dans la variable $filezipped
$filezipped=$zip->file();

// Indication du chemin de la sauvegarde du/des dossier(s) zippé(s)
$open = fopen($fichier_zip, "w");
fwrite($open, $filezipped);
fclose($open);
echo('</ol>');
?>

<p>Télécharger la sauvegarde : <a href="../archive/archive.zip">archive.zip</a></p>

Bon, il y a de nombreuses améliorations à prévoir :
- inclusion dans un plugin PluXML
- ajout automatique de la date dans le fichier du type archive-AAAA-MM-JJ-HHMM.zip
- envoi optionnel par courriel
- etc.

Mais en l'état, c'est bien pratique.

Bonne après-midi,
Brica.

Réponses

  • Jerry WhamJerry Wham Member
    octobre 2012 modifié
    Il existe un plugin qui fait déjà tout ça et qui envoie la copie soit par mail soit par ftp.
Connectez-vous ou Inscrivez-vous pour répondre.