# Komplettes Verzeichnis zippen



## xcylo (12. November 2004)

Hallo zusammen!

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


```
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


----------



## stanleyB (12. November 2004)

Gibt ne wunderbare Ziplib von PHPConcept:
http://www.phpconcept.net/pclzip/

Beispiel:
	
	
	



```
<?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!


----------



## xcylo (12. November 2004)

Hmja, Danke, das könnte was sein!

Werde mir das mal anschauen.

Gruß
XCylo


----------



## xcylo (12. November 2004)

Hey super, stanleyB!

Die Lib ist genau das, was ich gesucht habe. Vielen Dank   

Gruß
XCylo


----------



## xcylo (25. November 2004)

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


----------



## ShadowFire (25. November 2004)

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


----------



## xcylo (25. November 2004)

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

Gruß
XCylo


----------



## Oliver Gringel (25. November 2004)

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 ?


----------



## xcylo (25. November 2004)

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


----------



## xcylo (26. November 2004)

Nun gut, dann muss ich schauen, dass ich mir selber was bastele. Trotzdem vielen Dank für die Hilfe.

Gruss
XCylo


----------

