La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  Sauvegarde PHP d'un dossier et de ses sous-dossiers
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: Sauvegarde PHP d'un dossier et de ses sous-dossiers  (Lu 938 fois)
Sauvegarde PHP d'un dossier et de ses sous-dossiers
« sur: le 05-12-2007 a 17:18:04 »
david62
Membre récent
*

Hors-Ligne

Messages: 2



Je suis un lama!

Voir le Profil
Répondre avec citation

Bonjour,

Actuellement, j'utilise le script suivant (Cf. ci-dessous) pour sauvegarder des éléments de mon site.
Il fonctionne à merveille mais je ne parviens pas à sauvegarder les sous-dossiers présents dans le dossier. Est-ce que quelqu'un pourrait me dire ce qu'il faut changer dans le script ci-dessous et m'indiquer où doit s'opérer le changement.
J'ai bourlingué sur différents forums et sources et je ne trouve pas la solution.
Si la sauvegarde d'un sous-répertoire est impossible en PHP me dire.

J'utilise la classe zip.lib.php et la classe mime_mail.class.php

Merci

David62

Copie du script utilisé :

<?php
// Adresse mail pour envoi de la sauvegarde
$mail = "";
// Place du répertoire concerné par la sauvegarde dans l'arborescence de votre site
// exemple : si vous souhaitez sauvegarder un dossier images se situant au même niveau que le dossier qui
// le fichier zip_repertoire.php  $rep = "../images/";
$rep = "";
// Nom explicite pour identifier le répertoire sauvegardé
// ce nom figurera dans l'objet du mail de sauvegarde reçu et permettra d'identifier précisément
// le répertoire sauvegardé
// exemple : cf/ ci-dessus  $fichiers = "images du site";
$fichiers = "";

// Définition de la date
function date_fr($date=0)
{
  if(!$date)
    $date=date("Y-m-d H:i:s"); //Timestamp courant par défaut

    $a = substr($date, 0, 4);
    $m = substr($date, 5, 2);
    $j = substr($date, 8, 2);
    $h = substr($date, 11, 2);
    $min = substr($date, 14, 2);
    $s = substr($date, 17, 2);
$datefr=$j.'/'.$m.'/'.$a;
$heurefr=$h.':'.$min;
        return array("date"=>$datefr,"heure"=>$heurefr);
}

$date = date_fr();
$datejour = $date["date"]." - ".$date["heure"];



require("zip.lib.php") ; //indiquez le chemin d'accès à la librairie

$zip = new zipfile() ; //on crée un fichier zip

if ($dir = @opendir($rep))
{
    while (($file = readdir($dir)) !== false)
    {
      if($file != ".." && $file != ".")
      {
        $filename[] = $file;
      }
    }
closedir($dir);
}
//Test a faire pour ne pas avoir d'erreur si il n'y a pas d'image dans le dossier
if(sizeof($filelist) != '0') {
  sort($filelist);
}

$a = 0 ;
while(count($filename)>$a)
{
$fp = fopen($rep.$filename[$a],'r') ; //on ouvre le fichier en lecture seule
$contenu = fread($fp, filesize($rep.$filename[$a])) ; //on enregistre le contenu
fclose($fp) ; //on ferme FTP

$zip->addfile($contenu, $filename[$a]) ; //on ajoute le fichier
$a++; //on incrémente $a
}

// Sauve le zip
$f2=fopen($fichiers.".zip","w");
fputs($f2,$zip -> file());
fclose($f2);



      // ENVOI LE ZIP EN PJ

      include("mail.php");

      sendmail("","","",$mail,"","","Sauvegarde du répertoire des $fichiers - $datejour","Sauvegarder ce fichier en incluant la date du jour et l'heure dans le nom de l'archive",$fichiers.".zip");

      echo "<p align='center'><b>Envoi de la sauvegarde effectué !</b></p><br>";

     
?>

Rapporter au modérateur  

Re:Sauvegarde PHP d'un dossier et de ses sous-dossiers
« Répondre #1 sur: le 07-12-2007 a 13:27:38 »
TonTon FluBB
P'tit nouveau
**

Hors-Ligne

Sexe: Male
Messages: 143





Voir le Profil    WWW
Répondre avec citation

Salut,

Si tu veux ajouter les sous dossiers dans ta sauvegarde, tu dois parcourir le dossier récursivement, c'est à dire parcourir tous les sous dossiers également.

Niveau code, lorsque tu parcours ton dossier principal, tu test si il s'agit d'un fichier u d'un dossier (is_dir(), is_file()).

Si c'est un fichier tu l'ajoute à ta sauvegarde, si c'est un dossier tu le parcours de la même façon que le dossier principal.

Rapporter au modérateur  

TonTon FluBB, Webmestre et bassiste
Re:Sauvegarde PHP d'un dossier et de ses sous-dossiers
« Répondre #2 sur: le 07-12-2007 a 14:20:33 »
david62
Membre récent
*

Hors-Ligne

Messages: 2



Je suis un lama!

Voir le Profil
Répondre avec citation

Bonsoir,

Ai trouvé la solution ?
Voir ci-dessous

Merci

David

<?php

// Adresse mail pour envoi de la sauvegarde
$mail = "";
// Place du répertoire concerné par la sauvegarde dans l'arborescence de votre site
// exemple : si vous souhaitez sauvegarder un dossier images se situant au même niveau que le dossier qui
// le fichier zip_repertoire.php  $rep = "../images/";
$rep = "";
// Nom explicite pour identifier le répertoire sauvegardé
// ce nom figurera dans l'objet du mail de sauvegarde reçu et permettra d'identifier précisément
// le répertoire sauvegardé
// exemple : cf/ ci-dessus  $fichiers = "images du site";
$fichiers = "";

set_time_limit (1000);            // temps maximum d'exécution du script

// Définition de la date
function date_fr($date=0)
{
  if(!$date)
    $date=date("Y-m-d H:i:s"); //Timestamp courant par défaut

    $a = substr($date, 0, 4);
    $m = substr($date, 5, 2);
    $j = substr($date, 8, 2);
    $h = substr($date, 11, 2);
    $min = substr($date, 14, 2);
    $s = substr($date, 17, 2);
$datefr=$j.'/'.$m.'/'.$a;
$heurefr=$h.':'.$min;
        return array("date"=>$datefr,"heure"=>$heurefr);
}

$date = date_fr();
$datejour = $date["date"]." - ".$date["heure"];



require("zip.lib.php") ; //indiquez le chemin d'accès à la librairie

$zip = new zipfile() ; //on crée un fichier zip

function zipDir($rep,&$zip)
{
 
  if (!is_dir($rep)) return;
 
  if (!($dir = @opendir($rep))) {
      echo("<b>ERREUR: Une erreur s'est produite sur ".$rep."</b><br />");
      return;
  }
  while ($file = readdir($dir)) {
     
      if ($file == "." || $file == "..") continue;
      if (is_dir($rep."/".$file)) {
        zipDir($rep."/".$file,$zip,$i); 
      } elseif (is_file($rep."/".$file)) {
       
        $zip->addFile(file_get_contents($rep."/".$file),$rep."/".$file);
       
      }
      }
  }


zipDir($rep,$zip);
$filezipped=$zip->file();     
$open = fopen($fichiers.".zip", "w");   
fwrite($open, $filezipped);
fclose($open);

      // ENVOI LE ZIP EN PJ

      include("mail.php");

      sendmail("","","",$mail,"","","Sauvegarde du répertoire des $fichiers - $datejour","Sauvegarder ce fichier en incluant la date du jour et l'heure dans le nom de l'archive",$fichiers.".zip");

unlink ($fichiers.".zip");
    
     

      echo "<p align='center'><b>Envoi de la sauvegarde effectué !</b></p><br>";



     
?>

« Dernière Édition: le 07-12-2007 a 17:53:12 par david62 » Rapporter au modérateur  
Re:Sauvegarde PHP d'un dossier et de ses sous-dossiers
« Répondre #3 sur: le 08-12-2007 a 12:05:33 »
TonTon FluBB
P'tit nouveau
**

Hors-Ligne

Sexe: Male
Messages: 143





Voir le Profil    WWW
Répondre avec citation

Merci d'avoir répondu à ma place, je n'avais pas le temps.

Rapporter au modérateur  

TonTon FluBB, Webmestre et bassiste
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg