Advertisement
jondoe5001

zip archiv mit php

Mar 31st, 2016
2,718
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.02 KB | None | 0 0
  1. <?php
  2. /**
  3. * @description rekursives erstellen eines zip archives mit php
  4. * @inspired by @url http://andreknieriem.de
  5. * @todo: rekursive blacklist's
  6. */
  7.  
  8. /*
  9.  * Anmerkung: Der Ordner . bezeichnet immer den Ordner selbst. Der Ordner ..
  10.  * den jeweils darüber liegenden Ordner. Leere Ordner enthalten nur . und ..
  11.  * und sind darüber zu erkennen.
  12.  * Ordner die nicht leer sind, werden durch die enthaltenden Ordner oder Dateien
  13.  * übernommen.
  14.  */
  15.  
  16. // zu zippender ordner
  17. $folder = "zip/";
  18.  
  19. // file und dir counter
  20. $fc = 0;
  21. $dc = 0;
  22.  
  23. // die maximale Ausführzeit erhöhen
  24. ini_set("max_execution_time", 300);
  25.  
  26. // Objekt erstellen und schauen, ob der Server zippen kann
  27. $zip = new ZipArchive();
  28. if ($zip->open("backup.zip", ZIPARCHIVE::CREATE) !== TRUE) {
  29.     die ("Das Archiv konnte nicht erstellt werden!");
  30. }
  31.  
  32. echo "<pre>";
  33. // Gehe durch die Ordner und füge alles dem Archiv hinzu
  34. $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder));
  35. foreach ($iterator as $key=>$value) {
  36.  
  37.   if(!is_dir($key)) { // wenn es kein ordner sondern eine datei ist
  38.     // echo $key . " _ _ _ _Datei wurde übernommen</br>";
  39.     $zip->addFile(realpath($key), $key) or die ("FEHLER: Kann Datei nicht anfuegen: $key");
  40.     $fc++;
  41.  
  42.   } elseif (count(scandir($key)) <= 2) { // der ordner ist bis auf . und .. leer
  43.     // echo $key . " _ _ _ _Leerer Ordner wurde übernommen</br>";
  44.     $zip->addEmptyDir(substr($key, -1*strlen($key),strlen($key)-1));
  45.     $dc++;
  46.  
  47.   } elseif (substr($key, -2)=="/.") { // ordner .
  48.     $dc++; // nur für den bericht am ende
  49.    
  50.   } elseif (substr($key, -3)=="/.."){ // ordner ..
  51.     // tue nichts
  52.    
  53.   } else { // zeige andere ausgelassene Ordner (sollte eigentlich nicht vorkommen)
  54.     echo $key . "WARNUNG: Der Ordner wurde nicht ins Archiv übernommen.</br>";
  55.   }
  56. }
  57. echo "</pre>";
  58.  
  59. // speichert die Zip-Datei
  60. $zip->close();
  61.  
  62. // bericht
  63. echo "<h4>Das Archiv wurde erfolgreich erstellt.</h4>";
  64. echo "<p>Ordner: " . $dc . "</br>";
  65. echo "Dateien: " . $fc . "</p>";
  66. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement