[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Export automatisieren - REDAXO Forum
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/
engeltom
Beiträge: 84
Registriert: 8. Nov 2006, 18:42
Wohnort: Obermichelbach
Kontaktdaten: Website

Export automatisieren

27. Apr 2016, 19:08

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

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

Re: Export automatisieren

27. Apr 2016, 21:42

Hi!

Es gibt ein cronjob addon was dir das ermöglicht

engeltom
Beiträge: 84
Registriert: 8. Nov 2006, 18:42
Wohnort: Obermichelbach
Kontaktdaten: Website

Re: Export automatisieren

27. Apr 2016, 21:52

Danke für den tollen Hinweis.

Damit geht der Datenbank-Export. Schaffe ich das auch mit dem Datei-Export?

engeltom
Beiträge: 84
Registriert: 8. Nov 2006, 18:42
Wohnort: Obermichelbach
Kontaktdaten: Website

Re: Export automatisieren

1. Jun 2016, 18:38

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 :-)

dpf_dd
Beiträge: 151
Registriert: 20. Dez 2007, 14:07

Re: Export automatisieren

2. Jun 2016, 01:21

Aber natürlich, du kannst jedes beliebige PHP-Skript durch das Cronjob-Addon jagen... :D

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 :mrgreen:

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 :D

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 :D

Gruß und MfG,
Stefan / dpf_dd

Zurück zu „Allgemeines [R4]“