IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sauvegarde PHP d'un dossier et de ses sous-dossiers


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Sauvegarde PHP d'un dossier et de ses sous-dossiers
    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é :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?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>";
     
     
    ?>

  2. #2
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut
    Voila le code que j'utilise. Il sauvegarde en fichier zip le dossier et les sous dossiers selectioné

    appelle de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $fichier_zip = "toto.zip";         // nom du fichier zip que l'on veut
     
    $zip= new zipfile;
    $path = '../';            // repertoire que l'on veut zipper
     
    zipDir($path,$zip);
    $filezipped=$zip->file();       // On recupere le contenu du zip dans la variable $filezipped
    $open = fopen($fichier_zip, "w");    // On la sauvegarde dans le meme repertoire que les fichiers a zipper
    fwrite($open, $filezipped);
    fclose($open);
    voila la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    function zipDir($path,&$zip, $firstcall = true)
    {
                if (!is_dir($path)) return;
     
               if (!($dh = @opendir($path)))
               {
                      echo("<b>ERREUR: Une erreur s'est produite sur ".$path."</b><br />");
                      return;
               }
                         while ($file = readdir($dh))
                         {
     
                                  if ($file == "." || $file == "..") continue;
                                  if (is_dir($path."/".$file))
                                  {       // fonction recursive
                                          zipDir($path."/".$file,$zip, false);
     
                                  }
                                  elseif (is_file($path."/".$file))
                                   {      // c'est si un fichier, on le rajoute au zip
                                          $zip->addFile(file_get_contents($path."/".$file),$path."/".$file);
                                   }
                         }
     
              // si on est dans l'appel parent (premier appel)
              if($firstcall == true)
              {
                   echo "Sauvegarde effectuee";
              }
    }
    Évènements dans le 06?
    www.sortir06.com

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/02/2012, 09h41
  2. Réponses: 3
    Dernier message: 03/02/2009, 10h54
  3. Zipper un dossier avec ses sous-dossiers
    Par mnssylvain dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/01/2008, 23h42
  4. [EasyPHP] EasyPHP, ses sous dossiers
    Par S~C dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 13/05/2006, 10h25
  5. Comment copier un dossier et ses sous dossiers ?
    Par touhami dans le forum Langage
    Réponses: 5
    Dernier message: 30/12/2004, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo