Mit dem letzten ServicePack hat Gambio nun eine Datensicherung im Backend integriert. Die Möglichkeit der
Sicherung gab es zwar schon vorher. Im Backend ist sie aber erst seit dem letzten SP sichtbar. Eine gute Idee,
aber leider schlecht umgesetzt. Die Datensicherung basiert auf eine beigefügte Fileliste.txt die sich im
Admin-Verzeichnis befindet. Sie enthält jedoch bei weitem nicht alle Dateien, die gesichert werden sollten.
Andauernd werden Dateien geändert, hinzugefügt oder neue Verzeichnisse angelegt. Auch die sollten immer
gesichert werden. Und wer hat schon Lust diese Liste andauernd von Hand zu ergänzen, wenn er sich z.B. einen
neuen Template-Ordner anlegt!?
Ich habe nun eine Modifikation eingebaut, die noch vor der Datensicherung eine neue Filelist anlegt. Diese
enthält sämtliche Verzeichnisse und Dateien die sich im Shop-Root befinden. Lediglich das Verzeichnis
admin/backups und dessen Dateien werden nicht erfasst. In der Filelist werden zwar auch alle Bilder erfasst,
aber generell werden Bilder mit der Endung ('gif','jpg','png','ico') nicht mitgesichert. Dafür ist der Button
"Bilder sichern" zuständig.
Einbau:
Folgende Datei bitte erst sichern und anschließend mit einem vernünftigen Editor (z.B. PSPad) zum Bearbeiten
öffnen: ./admin/gm_backup_files_zip.php
In Zeile 30 steht dieser Code:
PHP-Code:
$exclude = array('gif','jpg','png','ico');
Füge darunter eine Leerzeile ein
In diese Leerzeile füge nachfolgenden Code ein:
PHP-Code:
// BEGINN: Modifikation zur Datensicherung
$dirIter = new RecursiveDirectoryIterator("../");
$recursiveIterator = new RecursiveIteratorIterator($dirIter, RecursiveIteratorIterator::SELF_FIRST, RecursiveIteratorIterator::CATCH_GET_CHILD);
$fp = fopen("filelist.txt", "w");
$z = 1;
foreach ($recursiveIterator as $element) {
$dat = str_replace("../","",$element->getPathname());
if (strstr($dat, '.')){
if (!stristr($dat, 'admin/backups')){ // Das Verzeichnis 'admin/backups' und sein Inhalt wird nicht gesichert
if ($z == 1) {
fputs($fp, $dat);
$z++;
} else {
fputs($fp, "\n" . $dat);
$z++;
}
}
}
}
fclose($fp);
// ENDE: Modifikation zur Datensicherung
Das ganze jetzt speichern und wieder hochladen.
Im Admin-Verzeichnis befindet sich noch die original Datei filelist.txt. Wer diese sichern will, sollte das
jetzt tun. Denn sie wird im nächsten Schritt überschrieben!
Der Code lässt sich sicherlich noch eleganter gestalten, vielleicht sogar ganz anders ansetzen. Aber ich bin
kein Programmierer! Deshalb sind Verbesserungsvorschläge und Anregungen ausdrücklich willkommen!
Wichtig ist aber, dass es funktioniert.
Bedienung:
Ganz einfach! Nämlich nicht anders wie vorher auch.
Backend >> Gambio >> "Dateien sichern" und auf den Button "Backup erstellen" klicken.
Jetzt wird eine Liste mit allen im Shop-Root befindlichen Dateien erstellt, außer wie gesagt, der Backup-
Ordner im Admin-Verzeichnis. Danach werden alle Dateien, die in der Liste stehen in eine ZIP-Datei gepackt
und im Backup-Verzeichnis gespeichert. Nicht gespeichert werden alle Dateien deren Endungen in dem Array
$Exclude aufgeführt sind:
PHP-Code:
$exclude = array('gif','jpg','png','ico');
Wer jetzt zum Beispiel einen Ordner mit Montageanleitungen im PDF-Format angelegt hat, muss diesen ja nicht
mit sichern. Normalerweise existieren davon bereits Kopien auf der heimischen Festplatte. Hier könnt Ihr in
das Array einfach die Endung PDF mit angeben:
PHP-Code:
$exclude = array('gif','jpg','png','ico','pdf');
Beim nächsten Klick auf den Button "Bilder sichern" werden dann alle Bilder in einer gesonderten ZIP-Datei
gepackt und ebenfalls im Backup-Verzeichnis gespeichert. An dieser Funktion wurde auch nichts geändert.
Die Archive solltet Ihr natürlich hin und wieder mal runterladen. Denn auch bei eurem Hoster können mal die
Platten abrauchen. Und die müssen keine Sicherheitskopie vorhalten!
Fragen, Verbesserungsvorschläge und Anregungen bitte in diesem Thread!
Die Nutzung dieses Tipps geschieht wie immer auf eigene Gefahr!