WbBackup

Ermöglicht das browserbasierte Backup eines Wiki-Felds.

Download: siehe http://www.pmwiki.org/wiki/Cookbook/WbBackup

Installation

Wichtig: Sie benötigen die zlib-Bibliothek (siehe phpinfo()) sowie die pclzip-Bibliothek. (Download unter http://www.phpconcept.net/pclzip/index.php)

  • Speichern Sie die Datei wbbackup.php in Ihrem cookbook-Verzeichnis.
  • Legen Sie ein Verzeichnis pclzip unterhalb Ihres cookbook-Verzeichnisses an.
  • Laden Sie die pclzip-Bibliothek herunter (http://www.phpconcept.net/pclzip/index.php) und legen Sie die Datei pclzip.lib.php aus dem Download-Archiv in das Unterverzeichnis pclzip.

Ihre Verzeichnisstruktur sollte nun so aussehen:

    ../cookbook
      |- wbbackup.php
    ../cookbook/pclzip
               |- pclzip.lib.php
  • Binden Sie die wbbackup.php folgendermaßen ein:
    include_once( "$FarmD/cookbook/wbbackup.php" );

Konfiguration

WbBackup ist so vorkonfiguriert, daß Sie in der Regel wenig oder gar nichts konfigurieren müssen. Dennoch haben Sie weitreichende Möglichkeiten, das Backup zu beeinflussen.

$wbBackupAction

Default: wbbackup

Hiermit können Sie den action-Parameter verändern, der das Backup auslöst. (...URL...&action=wbbackup)
Bitte beachten Sie, daß Sie diesen Parameter angeben müssen, _bevor_ Sie die wbbackup.php einbinden! Das bedeutet auch, daß Sie diesen Parameter in einer Wiki-Farm nur farmweit ändern können.

    Beispiel: $wbBackupAction = 'mybackup';

$wbBackupAuthLevel

Default: admin

Der notwendige Benutzerlevel, um das Backup aufrufen zu dürfen. Normalerweise sollte man dem normalen Besucher nicht einfach erlauben, ein Backup des Wikis herunter zu laden. Der Standardwert bedeutet, daß der Benutzer Administrations-Rechte braucht.

Bitte beachten Sie: Da das Backup im Kontext der aktuellen Seite ausgelöst wird, wird der Autorisierungsstatus für diese Seite als Kriterium herangezogen. Das bedeutet, wenn Sie hier "edit" angeben und ein Benutzer mit "edit"-Rechten auf nur eine Seite das Backup im Kontext dieser Seite auslöst, kann er alle Daten sichern und herunterladen. Das ist nicht notwendigerweise ein Sicherheitsrisiko, Sie sollten sich dessen aber bewußt sein, wenn Sie den Level ändern.

Gültige Werte: read, edit, attr, upload, admin

(Nicht alle sind sinnvoll...)

    Beispiel: $wbBackupAuthLevel = 'admin';

$wbBackupDelAction

Default: wbbackupdel

Der Name des Parameters, über den die Löschfunktion aufgerufen werden kann. (...URL...&action=wbbackupdel)

Da dieser Parameter gesetzt werden muß, _bevor_ die Erweiterung eingebunden wird, kann der Parameter nur in der farmconfig.php, also für die komplette Wiki-Farm, geändert werden!

Bei Aufruf dieser Funktion erhält man eine Liste aller Backup-Dateien mit der Möglichkeit, diese zu löschen.

    Beispiel: $wbBackupDelAction = 'mybackupdel';

$wbBackupDelAuthLevel

Default: admin

Der notwendige Benutzerlevel, um die Löschfunktion aufrufen zu dürfen. Es gilt das Gleiche wie oben.

    Beispiel: $wbBackupDelAuthLevel = 'admin';

$wbBackupFileName

Default: wiki-backup-<dd-mm-yyyy>.zip

Name der zu erzeugenden Zip-Datei. In der Standard-Einstellung wird das aktuelle Datum im Dateinamen verwendet. Sie können aber auch einen festen Dateinamen angeben, was bedeutet, daß die jeweilige Datei immer wieder überschrieben wird, wenn Sie das Backup auslösen.

    Beispiel: $wbBackupFileName = 'my-wiki-backup.zip';

$wbBackupDir

Default: ./__wiki_backups

Das Verzeichnis, in dem die Backups gespeichert werden.

Wichtig: Ist das Verzeichnis über das Web erreichbar (bei der Default-Einstellung ist das so), kann jemand, der den Pfad kennt, die Backups herunter laden! Bitte geben Sie hier ein Verzeichnis außerhalb des über Web erreichbaren Pfades an, so daß Backups nur per FTP heruntergeladen werden können, falls Sie Bedenken haben.

$wbBackupDirs

Default: local, pub, cookbook, wiki.d, uploads

Liste der Verzeichnisse, die gesichert werden. In obiger Standardeinstellung sind alle Verzeichnisse enthalten, in denen sich "Bewegungsdaten" befinden.

Verzeichnisse werden immer relativ zum Basis-Verzeichnis angegeben.

Hinweis: Sie können Verzeichnisse bzw. Unterverzeichnisse gezielt vom Backup ausschließen, indem Sie die $wbIgnoreDirs Option (s. u.) verwenden!

    Beispiel: $wbBackupDirs = array( "local", "pub", "wiki.d" );

$wbBackupFile

Default: $wbBackupDir/$wbBackupFileName

Diese Einstellung sollte normalerweise nicht geändert werden. Wird diese Option zusammen mit $wbBackupDir und $wbBackupFileName gesetzt, gilt die hier vorgenommene Einstellung.

$wbBackupBaseUrl

Default: $ScriptUrl without script file name

Basis-URL für den Download der ZIP-Datei. Muß nur geändert werden, wenn die Datei nicht im Standardpfad liegt, also wenn Sie $wbBackupDir geändert haben.

$wbBackupUrl

Default: $wbBackupBaseURL/__wiki_backups/$wbBackupFileName

Die komplette URL zum Download. Muß nur geändert werden, wenn die Datei nicht unterhalb des Wiki-Verzeichnisses liegt. Wird auch $wbBackupBaseUrl gesetzt, hat diese Einstellung Vorrang.

$wbBackupShowLink

Default: TRUE

Besagt, daß unter der Zusammenfassung ein Download-Link angezeigt wird. Setzen Sie diese Einstellung auf FALSE, wenn die Backup-Datei nicht vom Web aus erreichbar ist.

    Beispiel: $wbBackupShowLink = FALSE;

$wbBackupOverwrite

Default: FALSE

Einstellung, ob eine evtl. vorhandene Datei überschrieben werden darf. Sie sollten diese Einstellung normalerweise so belassen und veraltete Dateien mit Hilfe der 'wbbackupdel' Aktion entfernen. (Oder per FTP.)

    Beispiel: $wbBackupOverwrite = TRUE;

$wbBackupTrace

Default: FALSE

Wird diese Einstellung auf TRUE gesetzt, erhält man ausführliche Informationen darüber, was das Script tut. Sollte man nur setzen, wenn man einen Fehler sucht.

    Beispiel: $wbBackupTrace = TRUE;

$wbBackupIgnoreDirs

Default: pub/skins, pub/guiedit

Liste von Verzeichnissen, die aus der Sicherung ausgenommen werden. Sinnvoll, wenn die Sicherung wegen zu vieler Dateien fehl schlägt.

Verzeichnisse werden immer relativ zum Basis-Verzeichnis angegeben.

    Beispiel: $wbBackupIgnoreDirs = array( "pub/skins", "pub/guiedit", "uploads" );

Das "skins"-Verzeichnis wird beispielsweise ausgenommen, da eine Vielzahl von skins, die unter Umständen viele und große Grafiken beinhalten, problematisch sein kann. Zudem ändern sich die Skins in der Regel nicht sehr häufig, so daß sie auch per FTP gesichert werden können.

$wbBackupSendToBrowser

Default: FALSE

Hiermit kann man erreichen, daß der Browser automatisch den Download der erzeugten ZIP-Datei beginnt, ohne daß auf den Download-Link geklickt werden muß.

    Beispiel: $wbBackupSendToBrowser = TRUE;

Bekannte Fehler und mögliche Probleme

Es erscheint nur ein weißes Fenster

In einer Webserverumgebung verhindern verschiedene Einstellungen, daß ein Script zu lange laufen oder zu viel Arbeitsspeicher verbrauchen kann. Ist ein Wiki-Verzeichnis sehr umfangreich (beispielsweise viele Grafiken, PDFs oder ähnliches), kann es passieren, daß das Backup vom Webserver zwangsbeendet wird, bevor es zu Ende durchlaufen kann. Im Ergebnis bekommt man eine leere Seite, und die erzeugte ZIP-Datei ist ungültig.

In diesem Fall hilft es nur, Verzeichnisse aus der Sicherung auszunehmen. Ein guter Kandidat ist das uploads-Verzeichnis, das oft die meisten Daten beinhaltet. (siehe $wbIgnoreDirs)

Das Backup scheint durchzulaufen, aber es wurde keine Datei erzeugt, oder der Download-Link funktioniert nicht

Es gibt mehrere Möglichkeiten:

  • Die entsprechenden Einstellung (s. o.) sind nicht korrekt
  • Das Sicherungsverzeichnis existierte nicht, oder es konnte nicht automatisch erzeugt werden, daher konnte die ZIP-Datei nicht gespeichert werden. Prüfen Sie den Pfad und die Zugriffsrechte. (Es sind Schreibrechte erforderlich.)

Abort pclzip.lib.php : Missing zlib extensions

PHP muß mit den "zlib extensions" kompiliert sein, damit Sie diese Erweiterung nutzen können. Die Fehlermeldung besagt, daß das bei Ihnen nicht der Fall ist.

Release Notes

Thursday, January 17, 2008
First release.
Tuesday, January 22, 2008
Mod: renamed $wbIgnoreDirs to $wbBackupIgnoreDirs to unify variable names
Fix: Text outside php was sent to browser

See Also

BackupPages

This page may have a more recent version on pmwiki.org: PmWiki:WbBackup, and a talk page: PmWiki:WbBackup-Talk.