Problembeschreibung

Wer mit Akeebe-Backup für Joomla arbeitet, wird sicher auch seine Backuperstellung automatisiert nach Zeitplan starten wollen. Hierzu muss das Backup durch ein Ereignis getriggert werden.

Der übliche Weg das Backup zu starten ist es ein Cronjob zu konfigurieren. Leider ist das nicht auf jedem virtuellem Server möglich, abhängig vom Hostingpaket welches man bei seinem Hostingprovider gebucht hat. In früheren Versionen von Akeeba-Backup und JoomlaPack gab es deshalb als Alternative ein Plugin Akeeba Backup Lazy Scheduling. Dieses Plugin war ein Quasi-Ersatz für die besseren Cronjobs und funktioniert in der Form, dass das Plugin immer auch aufgerufen wird, wenn ein User irgendeine Seite des Projektes aufrief und prüfte dann ein konfiguriertes Zeitfenster und die eingestellte Häufigkeit ab, um dann ggf. das Backup zu start. Man kann sich vorstellen, dass man durch diesen Test permanent eine kleine Grundlast mitschleift.

In den neueren Versionen ist das Plugin nicht mehr verfügbar, oder nur noch als Dummi-Plugin um anzuzeigen, dass es nicht mehr genutzt werden kann.

Aber das Einrichten eines Cronjobs ist trotzdem etwas schwierig, vorausgesetzt der Hostingprovider lässt es überhaupt zu. Denn hier müssen die Rechte berücksichtigt werden und auch die Art- und Weise wie Php auf dem Server ausgeführt wird.

 



 

 

Ein wenig Grundwissen

Im Verzeichnis administrator/components/com_akeeba liegt ein Script backup.php. Unter Versionen nach 3.0 ist dafür dieses Script zu wählen: cli/akeeba-backup.php. Dieses Script ist genau das, welches für ein Backup per Cronjob gestartet werden muss. Üblicherweise genügt es, wenn dieses Script die Rechte 644 besitzt damit es ausgeführt werden kann. Jedoch kann auch 755 notwendig sein, speziell dann wenn nachfolend beschriebener Mod notwendig ist.

Dieses Script kann man zusätzlich mit Parameter aufrufen und somit speziell steuern wie gesichert werden soll. Mögliche Parameter sind z.B. -profile=1 oder -description="Mein Meldungstext". Ein kompletter Aufruf sähe dann z.B. so aus:

administrator/components/com_akeeba/backup.php -profile=1 -description="Mein Meldungstext"

 

Probleme und Ihre Lösung

Das gewünschte  Sicherungsprofil wird nicht obwohl als Paramter korrekt übergeben.

Ja, manchmal ist es einfach nicht möglich per cronjob Parameter zu übergeben. In diesem Fall habe ich mir mit folgendem Workaround beholfen:

  • man kopiert das Script backup.php z.B. nach backup_Cronjob_Profile11.php
  • Dieses neue Script öffnet man zum Editieren und sucht sich die Stelle wo im Script als Option die Profilnummer oder die Beschreibung übergeben werden soll.
  • Hier wird das Script dahingehend modifiziert, dass die dortigen Standardwerte durch die eigenen überschrieben werden.
    $profile = getOption('profile', 1);
    $description = getOption('description', 'Cronjob: Akeeba-Backup Projekt X durchgeführt.');
  • Im Cronjob ruft man dann dieses modifizierte Script auf statt des Standardscriptes, ganz ohne Parameter
Ein weiteres Problem könnte sein, dass Cronjob ein Script nicht dem Interpreter zuordnen kann.

Es genügt dem Cronjob mitunter nicht wenn man einfach nur ein php-Script aufruft, dass Cronjob damit auch weiss, dass es ein PHP-Script ist und über den PHP-Interpreter ausgeführt werden soll. In diesem Fall muss man ebenfalls wieder oben genanntes backup.php-Script modifizieren. Der übliche Weg ist dann einfach als allererste Zeile im Script z.B. folgendes einzufügen:

#!/usr/local/bin/php

Der hier angegebene Pfad ist so üblich unter Linux, kann aber abhängig vom Host abweichen. Hier einfach den Hostingprovider befragen, wie PHP und Cronjob die Pfadangabe erwarten.

 

 {jcomments on}