Aber natürlich, du kannst jedes beliebige PHP-Skript durch das Cronjob-Addon jagen...
Im Dropdown "Typ" auf PHP-Code stellen, "Name" und "Intervall" beliebig einstellen und bei "Umgebung" nur Backend selektieren und unten ins Textfeld dein PHP-Code reinsetzen...
Ich hab sowas ähnliches im Einsatz und mir mal 10min genommen das für dich aufzubereiten...
Rein technisch sollte das funktionieren, es sei denn ich hab beim Umschreiben der Uhrzeit wegen paar Klammern zu viel oder Semikolons zu wenig drin. Probier's einfach mal aus
Code: Alles auswählen
<?php
### Dokument auf UTF8 einstellen
header('Content-Type: text/html; charset=UTF-8');
### Cronjob-Klasse
class Cronjob
{
### MySQLi connecten
private $mysqli;
### Kontruktor
public function __construct(MySQLi $mysqli)
{
$this->mysqli = $mysqli ;
}
public function deleteFolder($source)
{
if (!is_dir($source))
return false;
$shellBefehl = "rm -Rv $source";
exec($shellBefehl);
return true;
}
### Funktion zum Verzeichnis kopieren
public function copyFolder($source, $destination, $recursive = true)
{
if (is_dir($destination))
$this->deleteFolder($destination);
else
mkdir($destination);
$handle = @opendir($source);
if(!$handle)
return false;
while ($file = @readdir ($handle))
{
if (eregi("^\.{1,2}$",$file))
{
continue;
}
if(!$recursive && $source != $source.$file."/")
{
if(is_dir($source.$file))
continue;
}
if(is_dir($source.$file))
{
copyFolder($source.$file."/", $destination.$file."/", $recursive);
}
else
{
copy($source.$file, $destination.$file);
}
}
@closedir($handle);
}
}
### Cronjob ausführen
$mysqli = new MySQLi('localhost','deinusername','deinpasswort','deinedatenbank');
$cronjob = new Cronjob($mysqli);
$cronjob = $cronjob->copyFolder('deinquellverzeichnis','deinzielverzeichnis');
?>
Da der Cronjob im Hintergrund läuft verzichte ich immer auf eine echo-Ausgabe einer Success- oder Errormeldung. Redaxo loggt ja mit und dort ist dann einsehbar, ob der Cronjob erfolgreich lief oder nicht
Die Funktion ist rekursiv, kopiert also auch alle Unterverzeichnisse mit. Für Redaxo würde demnach als $source "/redaxo" reichen, dann kopiert es KOMPLETT alle Inhalte nach $destination "/redaxo_backup"... Das Verzeichnis $destination wird dabei überschrieben, wenn es existiert. Du kannst dir das aber noch anpassen, z.B. eine Laufzeitvariable einbringen, die in immer neue Verzeichnisse schreibt. Oder $recursive auf false setzen, dann kopiert es nur die Dateien des Ordners, aber keine Unterverzeichnisse... Wie gesagt, alles ist möglich
Wie gesagt, der Code ist nicht getestet. Kannst ja mal schreiben, ob du es hinbekommen hast
EDIT: Die MySQLi-Codezeilen kannst du theoretisch noch rausnehmen, dass brauchst du für dein Vorhaben nicht. Ich habs aber mal drin gelassen, weil es für andere Zwecke durchaus nützlich sein kann und ich Universalskripte sehr mag
Gruß und MfG,
Stefan / dpf_dd