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

Bibliothèques et frameworks PHP Discussion :

[GZip] script de backup compresser un repertoire en gzip


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut [GZip] script de backup compresser un repertoire en gzip
    bonjour,

    je voudrais automatiser un process de backup avec un script php

    je connait deja les fonctions gzwrite et gzopen mais je cherche un moyen de compresser en gzip tout un repetoire

    j ai reussi a faire un script qui copie un repetoire en compressant en gzip un par un les fichiers a l interieur mais c pluto le contraire que je voudrais plutot l inverse : un dossier compressé en gzip avec les fichiers dedans

    est ce possible a votre avis ?

    meme en utilisant autre chose que gzip eventuellement

    merci d avance


    edit : ci joint mon script actuel , si cela interesse quelqu un

    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
     
    function gzcompressfile($path,$file,$dir, $level=false){ 
       $dest=$dir."/".$file.'.gz'; 
       $mode='wb'.$level; 
       $error=false; 
       if($fp_out=gzopen($dest,$mode)){ 
           if($fp_in=fopen("$path$file",'rb')){ 
               while(!feof($fp_in)) 
                   gzwrite($fp_out,fread($fp_in,1024*512)); 
               fclose($fp_in); 
               } 
             else $error=true; 
           gzclose($fp_out); 
           } 
         else $error=true; 
       if($error) return false; 
         else return $dest; 
    } 
     
     
    function DirWalkAndCompress($path , $dir, $recursive=TRUE) {
     
     if(!is_dir($path) || !is_readable($path)) 
      return; 
     
     $fd = dir($path); 
     
     while($file = $fd->read()){ 
     
      if(($file != ".") && ($file != "..")){ 
       if(@is_dir("$path$file/")) {
     
       	mkdir ("$dir$file", 0777 );
        $test = ($recursive)?DirWalkAndCompress("$path$file/","$dir$file/"):0; 
       }
     
       else  
        gzcompressfile($path, $file,$dir); 
      } 
     
     } 
     
     $fd->close(); 
     
    }
     
    DirWalkAndCompress("./log_bruts/","./test/");

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Ne serait-il pas plus simple d'executer directement la commande gzip à partir de php ? ( si ton serveur est un unix )
    Ca t'éviterait de réinventer la poudre, car gzip permet déjà de compresser un repertoire avec tout ce qu'il y a dedans!
    K

  3. #3
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    surement mais ca n est pas sous unix, j utlise un script en ligne de commande sous windows XP

  4. #4
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Sur gzip.org tu as gzip sur toutes les plateformes, ça ne te convient pas ?
    K

  5. #5
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    en fait l autre script fonctionne mais il y a une limite de taille , donc je regarde du coté de gzip mais j arrive pas a compresser un repetoire entier dans un fichier test.gz

    voila la commande que j utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $dir = "log_bruts";
     
    exec ("gzip.exe --recursive -c $dir > test.gz ");
    si je fais seulement --recursive ca fonctionne mais les fichiers originaux sont compressé un a un en gz --> pas bon

    si je fais --recursive -c $dir > test.gz j ai bien un fichier test.gz mais il contient uniquement le premier fichier trouvé dans le repertoire, la recursivité ne fonctionne pas .. :

  6. #6
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    D'après le man de gzip, quand tu fais "gzip -r" ça compresse recursivement un repertoire et ses sous-repertoires, je n'ai pas vu de fonction qui permette de faire un gz "solid", comme tu pourrais en faire pour un rar par exemple.

    Es-tu sûr que la fonctionnalité que tu cherches est bien "gzip" ? Tu veux créer un fichier gz, ou un fichier zip ? Même zip ne possède pas l'option "solid archive", que seul le rar ( ou le 7z? ) parrait avoir.

    Au fait, l'option -c n'a rien à voir avec la compression ! C'est une option d'affichage dans le même style que -v
    K

  7. #7
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    en fait c est pour faire un backup de repertoire, le but est de compresser (gzip, zip rar peut importe) le contenu d un repetoire de travail a des intervalles données et de l envoyer sur un ftp pour archive

    j y arrive avec le script mais zlib en php semble etre limité en taille d archive , car mes tests sur des rep de 200-300 mo ont echoué (archive pas créée )

    j ai pourtant besoin de la limite soit le plus loin possible

    peut etre que winrar utilisé en ligne de commande serait une solution , je vais voir de ce coté aussi

  8. #8
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Mais je n'ai toujours pas compris en quoi un gzip -r te dérange ?
    K

  9. #9
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    je dois stocher les archives sur un serveur, et vu que ca sera surement qutodien sur disons une cinquantaine de fichiers importants

    au bout de 100 jours : 50*100 = 5000 fichiers sur le serveur

    si une seule archive : 50 fichiers avec tout ce qu il faut dedans

    de plus ca n est pas mon exigence personnelle mais je reponds a une demande

  10. #10
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Tu peux utiliser zip231 qui parrait être de bonne facture, et il doit proposer ce genre de fonctionnement
    Plus d'infos sur info-zip.org
    K

  11. #11
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    ok je vais jetter un oeil de ce coté merci

  12. #12
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Ah oui !:


    celui la c est le bon , merci bcp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script de backup
    Par d10g3n dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 21/04/2009, 17h28
  2. Script de livraison de fichiers/repertoires
    Par LeDub dans le forum Langage
    Réponses: 4
    Dernier message: 09/10/2006, 18h40
  3. [VB.Net 2.0] Comment compresser un répertoire ?
    Par Angath dans le forum VB.NET
    Réponses: 3
    Dernier message: 12/07/2006, 13h40
  4. Script pour backup
    Par IDE dans le forum Administration système
    Réponses: 18
    Dernier message: 01/05/2006, 18h12
  5. Script shell qui change le repertoire courant
    Par Estats dans le forum Linux
    Réponses: 4
    Dernier message: 17/11/2005, 14h17

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