Zip-Archiv von einem Ordner mit PHP erstellen und entpacken

Flattr this
Tweet this: Zip-Archiv von einem Ordner mit PHP erstellen und entpacken
Dent this: Zip-Archiv von einem Ordner mit PHP erstellen und entpacken

Das Beispiel zeigt wie einfach man mit Hilfe des RecursiveDirectoryIterator und ZipArchiv ein Backup von einem Ordner erstellt und wieder entpackt.

<?php
$sourcePath = realpath('../../');

$archiv = new ZipArchive();
$archiv->open('archiv.zip', ZipArchive::CREATE);
$dirIter = new RecursiveDirectoryIterator($sourcePath);
$iter = new RecursiveIteratorIterator($dirIter);

foreach($iter as $element) {
    /* @var $element SplFileInfo */
    $dir = str_replace($sourcePath, '', $element->getPath()) . '/';
    if ($element->isDir()) {
        // Ordner erstellen (damit werden auch leere Ordner hinzugefügt
        $archiv->addEmptyDir($dir);
    } elseif ($element->isFile()) {
        $file         = $element->getPath() .
                        '/' . $element->getFilename();
        $fileInArchiv = $dir . $element->getFilename();
        // Datei dem Archiv hinzufügen
        $archiv->addFile($file, $fileInArchiv);
    }
}

// Einen Kommentar mitspeichern
$archiv->setArchiveComment('Backup von ' . $sourcePath);

$archiv->close();

// Und zum entpacken:

$destinationPath = realpath('tmp/');
$archiv = new ZipArchive();
$archiv->open('archiv.zip');
// In Ordner entpacken
$archiv->extractTo($destinationPath);

Trackbacks (0)

Trackbackurl: http://www.robo47.net/trackback/snippet/9

Es sind keine Trackbacks vorhanden.


Kommentare (2)

  • Kommentar von ragtek am 08.11.2010 12:46:37
    Gravatar ragtek

    hi

    da ich gerade vor dem selben Probleme stehe und deinen Code "studiere" ist mir ein "kleiner Fehler" aufgefallen:

    1. das kommentar kommentar hat einen klitzekleinen fehler

    2. es gibt keine $absolutePath Variable


  • Kommentar von robo47 am 08.11.2010 22:28:24
    Gravatar robo47

    thx, fixed


Die Kommentare zu diesem Beitrag sind gesperrt.

You liked it ? Link it on your homepage or blog: