Komplettes Verzeichnis zippen

xcylo

Mitglied
Hallo zusammen!

Ich habe zwei Funktionen zum Zippen bzw. Entzippen einer Datei. Diese sehen folgendermaßen aus:

PHP:
function zip($srcfile, $zipfile)
{
  $fp = fopen($srcfile,"r");
  $data = fread ($fp, filesize($srcfile));
  fclose($fp);
  $zp = gzopen($zipfile,"w9");
  gzwrite($zp, $data);
  gzclose($zp);
}
//////////////////////////////////////////////////////////////
function unzip($srcfile, $zipfile)
{
  $use_include_path=0;
  $file = @gzopen($zipfile,"rb", $use_include_path);
  if ($file)
  {
    $data="";
    while (!gzeof($file)) $data .=gzread($file, 1024);
    gzclose($file);
  }
  $fp = fopen($srcfile,"w+");
  fwrite($fp, $data);
  fclose($fp);
}
Diese funktionieren soweit auch bestens. Wie ist es aber möglich, ein komplettes Verzeichnis samt Unterverzeichnissen und enthaltenen Dateien in ein Zipfile zu bekommen? Mit diesen Funktionen klappts natürlich nicht... Gesucht habe ich auch schon hier im Forum, leider ohne gewünschten Erfolg.

Wäre für jede Hilfe oder Anregung dankbar!


Gruß
XCylo
 
Zuletzt bearbeitet:
Gibt ne wunderbare Ziplib von PHPConcept:
http://www.phpconcept.net/pclzip/

Beispiel:
PHP:
 <?php
  include_once('pclzip.lib.php');
  $archive = new PclZip('archive.zip');
  $v_list = $archive->create('file.txt,data/text.txt,folder');
  if ($v_list == 0) {
    die("Error : ".$archive->errorInfo(true));
  }
?>

Cheers!
 
Hm, sorry, muß das Topic nochmal hoch holen. Die Ziplib ist zwar ganz nett, hat aber scheinbar nen Bug. Es werden nämlich vereinzelte Dateien nicht mit in das Zip-Archiv mit aufgenommen (bei mir seltsamerweise alle Dateien, bei denen im Namen ein "-b" oder "_b" vorkam).

Weiß jemand, woran das liegen könnte oder kennt einer noch eine andere Lösung für mein ganz am Anfang genanntes Problem?

Gruß
XCylo
 
Zuletzt bearbeitet:
also, per script habe ich es zwar noch nie gemacht, aber du hast die möglichkeit, es von deinem system erledigen zu lassen, mittels exec () und co
wenn du dann noch die zugriffsrechte beachtest, hast du auf jeden fall eine zuverlässige archivierung


mfg sven
 
Was soll ich von meinem System erledigen lassen? Das Zippen? Wie geht das denn mit kompletten Verzeichnissen?

Gruß
XCylo
 
Um Verzeichnisse zu packen, benutzt man normalerweise tar. Mit den zlib-Funktionen kannst du nicht mehrere Dateien packen, sondern nur eine Datei komprimieren. (Hat im übrigen nichts mit zip zu tun.)
Welches OS benutzt du denn ?
 
Der Webserver, wo das ganze mal laufen soll ist von 1&1, also gehe ich mal von Unix o.ä. aus. Lokal soll das allerdings auch funktionieren, und da gibts WinXP.
Tar wäre im Übrigen auch OK, hauptsache, ich kann die Ordner einigermaßen zügig per PHP-Skript packen und später wieder entpacken. Was wäre denn da eine mögliche Lösung?

Wobei die oben von StanleyB empfohlene Ziplib wirklich gut funktioniert, bis auf diesen seltsamen Fehler, dass sie bestimmte Dateien beim Extrahieren (nicht beim Packen!) einfach ignoriert.

Gruß
XCylo
 
Zurück