Hallo,
im Backend gibt es ja das Addon Import/Export. Hier kann ich sowohl die Datenbank als auch die Files in einer Datei sichern (auf Server oder als Download).
Kann ich dieses Script / Addon auch von außen (also außerhalb Redaxo) aufrufen?
Mein Ziel ist, dass ich über einen Cron-Job einmal täglich alles in exportiere und auf dem Server speichere. Geht etwas in der Pflege der Homepage schief, kann man schnell einen Import machen.
Ich will hier bewusst nicht mit einem anderen Programm (MySQLDumper) arbeiten sondern ich will die Standards von Redaxo nutzen.
Merci, Thomas
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
- Markus.Staab
- Entwickler
- Beiträge: 9634
- Registriert: 29. Jan 2005, 15:50
- Wohnort: Aschaffenburg/Germany
- Kontaktdaten: ICQ Website
Re: Export automatisieren
Danke für den tollen Hinweis.
Damit geht der Datenbank-Export. Schaffe ich das auch mit dem Datei-Export?
Damit geht der Datenbank-Export. Schaffe ich das auch mit dem Datei-Export?
Re: Export automatisieren
Ich muss leider nochmal nachfragen: mit dem Addon Cronjob kann ich bequem einen Datenbank-Export automatisieren.
Kann ich das auch mit dem Dateiverzeichnis machen? Ich meine es ändert sich ja nicht nur was in der Datenbank, sondern oftmals auch im Verzeichnis files (Bilder, PDF, ...)
Hilfe wäre super
Kann ich das auch mit dem Dateiverzeichnis machen? Ich meine es ändert sich ja nicht nur was in der Datenbank, sondern oftmals auch im Verzeichnis files (Bilder, PDF, ...)
Hilfe wäre super
Re: Export automatisieren
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
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
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');
?>
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