Schon lange wollte ich auf Basis meiner Erkenntnisse mit den beiden Versionen - ich habe SyncData2 sozusagen von Ralf geerbt - ein neues Modul bauen. Zum einen sind die Komponenten in SyncData2 mittlerweile veraltet - da werden unter anderem Teile des Symfony bzw. Silex Frameworks verwendet, da Ralf ganz bewußt NICHT auf CMS-Komponenten aufsetzen wollte. Zum anderen gibt es keine Admin-GUI, man muß alles von Hand in diversen Konfigurationsdateien einstellen und auch das Log ist zwar extrem umfangreich und aussagekräftig, man muss es aber lesen können. Kurz: Es ist ein Tool für Profis.
Da auch bei unserem "Nachbar-CMS" WBCE Bedarf an einem neuen Backup-Tool besteht, habe ich mal angefangen, ein Hybrid-Modul zu bauen, also ein Modul, das sowohl mit BC1/BC2, als auch mit WBCE funktioniert. Ich als Programmierer muss da zwar einige Abstriche machen, da ich die Luxus-Funktionen von BC nicht nutzen kann - bzw. für WBCE nachbauen muss. Das hat aber für den Anwender keine sichtbaren Auswirkungen.
Und so sieht es (derzeit) aus:
Das (geplante) Verfahren:
Man hakt einfach an, was man sichern möchte. Dazu klappt man über den Link "Create new backup job" (an einigen Stellen fehlen noch die Übersetzungen) ein kleines Formular auf.
Mit Klick auf [Sicherung starten] (der muss noch umbenannt werden, seht Ihr gleich) erstellt man dann zunächst mal einen Job in der Datenbank. Dieser wird (zumindest derzeit) nicht automatisch gestartet. Grundproblem: Server Timeout. Gerade die Sicherung des media-Verzeichnisses kann ja sehr lange dauern, da reichen die standardmäßigen 30 Sekunden für Scripten nicht aus. Es gibt da diverse Tricks, die Details lassen wir mal beiseite.
Die so erstellten Jobs sieht man dann in der Liste. Man sieht auch, ob ein Job schon gestartet wurde, ob er noch läuft, bzw. wenn er fertig ist, ob das erfolgreich war. Das sind alles Funktionen, die es noch nicht gibt, aber so soll es dann werden.

Einen Job im Status "neu" kann man dann über das Icon rechts daneben starten. Läuft bereits ein anderer Job, muss dieser erst beendet sein bzw. beendet werden. Ob es überhaupt Sinn macht, dass man dann einen neuen Job erzeugen kann, ist eine Frage, die ich später mal beantworte, das hängt auch davon ab, was ich bei der Entwicklung noch so an Ideen habe. Momentan gibt es z.B. auch noch keinen Ansatz dafür, einen Sicherungsjob z.B. per Cronjob regelmäßig zu wiederholen. Erst mal muss das Sichern grundsätzlich funktionieren, dann kann man sich mit solchen Details befassen.
"Endziel" ist, dass man neben der manuellen Sicherung und Wiederherstellung Daten an eine andere Installation (Instanz) schicken kann, damit beide gleich aussehen. Somit kann ich dann in einer lokalen Installation - z.B. in einer Portable - meine Änderungen machen und nach Fertigstellung an meine Live-Instanz senden. Das ist die eigentliche Kernfunktion von SyncData2. Logisch, dass das die Sache extrem komplex macht - angefangen bei einem unterschiedlichen Tabellen-Präfix über den Erhalt von Änderungen, die auf dem Ziel möglicherweise stattgefunden haben, bis hin zu eventuell unterschiedlichen Datenbank- und PHP-Versionen. Das wird insbesondere bei BC2 eine echte Herausforderung, da wir dort ja mit einer Engine-Installation diverse Sites betreiben können und aufpassen müssen, dass wir mit dem Sync einer Site nicht die komplette Installation plätten. Da krieg ich, gelinde gesagt, Kopfschmerzen bei dem Gedanken.
