Automatisches Datenbank-Backup mit Cronjobs bei All-Inkl

Wenn man eine Website/Web-Applikation betreibt, die auf eine SQL-Datenbank zurückgreift, macht es definitiv Sinn regelmäßig automatisiert eine Sicherung der Datenbank anzulegen. Nicht nur als Schutz, falls man selber etwas zerlegt, sondern natürlich auch falls z. B. ein Update des verwendeten CMS fehlschlägt oder ein Hacker es schafft die Datenbank zu löschen.

Wenn man seinen Webspace bei All-Inkl hat sind Cronjobs ab dem PrivatPlus-Paket inklusive. Als erstes sollte man unter einer der vorhandenen Domains einen per htaccess mit Passwort geschützten Ordner namens „intern“ oder dergleichen anlegen. Dieser Ordner ist dann am besten nur für Skripte die als Cronjob genutzten werden zu verwenden. Auf die Einrichtung gehe ich an dieser Stelle nicht ein. Für die Ablage der Backup-Dateien habe ich einen Ordner namens „backups“, mit entsprechenden Schreibrechten, außerhalb der Ordner der einzelnen Domains angelegt. Dieser ist also nur per FTP zu erreichen.

Für das Anlegen der Dumps benutze ich folgenden Code:

Die Funktionsweise ist recht simpel: Die Zugangsdaten zu allen zu sichernden Datenbanken werden im Array $databases hinterlegt. Da bei All-Inkl der Datenbank-Name immer dem Datenbank-Nutzer entspricht braucht man hier keine Unterscheidung machen. Der im Feld „export“ angegebene Text wird für die Benennung der Dump-Datei verwendet. Deshalb bietet sich es hier an den jeweiligen Domain-Namen zu verwenden. Mit Hilfe von Exec wird der Dump für jede Datenbank erstellt und gezippt.

Wichtig: Die Datei darf aufgrund der Verwendung von exec nicht als PHP-Datei gespeichert sein, da All-Inkl dies verbietet. Stattdessen muss diese mit der Endung „.phpx“ gespeichert werden. Mehr dazu erfährt in der All-Inkl-FAQ

 

Im KAS von All-Inkl legt man den Cronjob unter Tools > Cronjobs an:

Dort gibt man die URL zum auszuführenden Skript an (auf das richtige Protokoll achten!). Für das Passwort des per htaccess geschützten Ordners verwendet man am besten kein zu langes Passwort und auch keine Sonderzeichen, damit bekam ich immer Fehlermeldungen beim Versuch den Cronjob anzulegen. Diese Zugangsdaten sind hier unten einzutragen:

An die hinterlegt E-Mail-Adresse wird die Ausgabe des Skriptes geschickt.

 

Vielleicht hilfreich für den einen oder anderen:

Die angegebene maximale Anzahl an Cronjobs bei All-Inkl ist übrigens eigentlich irrelevant, da man sich auch ein Skript schreiben kann, dass zu bestimmten Uhrzeiten andere Tasks ausführt oder andere Skripte per include einbindet. Dieses Skript kann man dann mit einem einzigen Cronjob z. B. jede Stunde ausführen lassen. Entweder wird dann eine Aufgabe ausgeführt oder nicht. Somit reicht eigentlich ein einziger Cronjob um Hunderte Aufgaben zu bewältigen.

Tobias Langner

Ich arbeite seit mehreren Jahren als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-„Pausierer“ an der FernUni Hagen

Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Schreibe einen Kommentar