Ergebnis 1 bis 8 von 8

Thema: Datensicherung von Contao 4 bei All-Inkl

  1. #1
    Contao-Fan Avatar von jscholtysik
    Registriert seit
    19.06.2009.
    Ort
    München
    Beiträge
    366

    Standard Datensicherung von Contao 4 bei All-Inkl

    Hi,


    für Contao 3.5 habe ich bisher immer das von All-Inkl angebotene PHP-Script für die Datensicherung der FTP-Daten verwendet und auch in einem Cronjob eingebunden:

    https://all-inkl.com/wichtig/anleitu...ichten_97.html

    Leider gibt es mit diesem PHP-Script das Problem, dass es bei Contao 4 leider nicht die Symlinks mit kopiert, wodurch dann das Backup wertlos wird.

    Hat irgendjemand ein Script oder kann eins empfehlen, das mit Symlinks umgehen kann und dann auch wieder in einem Cronjob funktioniert?


    Danke schon mal.
    Joachim
    *** Kein Backup, kein Mitleid ***

  2. #2
    Contao-Nutzer
    Registriert seit
    04.12.2013.
    Ort
    Reutlingen
    Beiträge
    221

    Standard

    Hi,

    ich habe mal folgendes gefunden und bei mir auf dem All-Inkl am laufen. Danke auch hier für den "Erfinder"
    Das Script liegt in /web/backup/ und wird dann per Cronjob abgerufen. Zu optimieren wäre hier noch, ein löschen der Daten nach ca. 5 Tagen oder so

    PHP-Code:
    <?
        // PHP-Konfiguration optimieren
        @error_reporting(E_ALL ^ E_WARNING);
        @ini_set("max_execution_time", 300);
        @ini_set("memory_limit", "256M");
        
        // Zu sicherndes Unterverzeichnis. Bleibt leer, wenn gesamter Account gesichert werden soll.
        $verzeichnis = "contao-installation";
        
        // Auszuschließende Ressourcen
        $ignorieren = array("*.sql.gz", "*.tar.gz", "*.tgz", "kas_backup", "usage", "logs");

        // PEAR-Klasse einbinden und Archiv erstellen
        $pfad = preg_replace('/(\/www\/htdocs\/\w+\/).*/', '$1', realpath(__FILE__));
        include "Archive/Tar.php";
        $archivname = "archiv/".preg_replace('/.+\/(.+)\/$/', '$1', $pfad).date('_Y-m-d_His').".tar.gz";
        $archiv = new Archive_Tar($archivname, true);
        $archiv->setIgnoreList($ignorieren);
        $archiv->createModify($pfad.$verzeichnis, "", $pfad);
        echo "Backup fertig";
    ?>
    Hoffe dir hilft es weiter

  3. #3
    Contao-Fan Avatar von jscholtysik
    Registriert seit
    19.06.2009.
    Ort
    München
    Beiträge
    366

    Standard

    Hi Flox,


    das ist das Script von All-Inkl, das ich bisher unter Contao 3.5 auch einsetze. Genau hier gibt es ja unter Contao 4 das Problem mit den Symlinks...
    Joachim
    *** Kein Backup, kein Mitleid ***

  4. #4
    Contao-Nutzer
    Registriert seit
    04.12.2013.
    Ort
    Reutlingen
    Beiträge
    221

    Standard

    Hi,

    also bei mir bleiben die Symlinks nach dem verpacken. Ich hatte es auch einmal getestet und das hatte gut funktioniert.
    Auf dem Screen siehst du den Modulordner aus einem Entpackten Backup
    Angehängte Grafiken Angehängte Grafiken

  5. #5
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.612
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich verwende auch ein eigenes Script auf der Grundlage von All-Inkl.
    Bist Du Dir sicher, dass die Symlinks nicht gesichert sind, denn es läuft doch auf Linux mit dem tar-Kommando und tar soll nach allem was ich gelesen habe, auch Symlinks können.

    Evtl. ist hier nur ein zusätzlicher Kommandozeilen-Parameter notwendig.
    Ich schaue mir das mal an, es interessiert mich auch.

    Wie hast Du den Restore gemacht?
    Auch per Script? oder lokal und hochgeladen?

  6. #6
    Contao-Fan Avatar von jscholtysik
    Registriert seit
    19.06.2009.
    Ort
    München
    Beiträge
    366

    Standard

    Kommando zurück:

    Ich hatte das Backup manuell bei All-Inkl angestoßen und dann die Backup-Datei am Windows Laptop heruntergeladen und kontrolliert.

    Das ist wieder das typische Windows-Problem, dass Windows nicht mit den Symlinks umgehen kann und aus den Symlinks dann Dateien macht.

    Ich habe es jetzt mal am Mac heruntergeladen und ausprobiert, da gibt es überhaupt keine Probleme. Die Symlinks sind ganz normal da.

    Sorry für die Falschmeldung.

    Das heißt, das Backup-Script von All-Inkl kann schon sauber Symlinks kopieren und ins Backup mit reinnehmen.


    Hier mal das FTP-Script leicht abgeändert. Ich habe noch den Domainnamen in den Archivnamen mit reingenommen sowie dann als Abschlussmeldung noch einen Downloadlink dazugenommen, mit dem dann das erstellte Archiv direkt heruntergeladen werden kann:

    Code:
    <?
        // PHP-Konfiguration optimieren
        @error_reporting(E_ALL ^ E_WARNING);
        @ini_set("max_execution_time", 300);
        @ini_set("memory_limit", "256M");
        
        // Zu sicherndes Unterverzeichnis. Bleibt leer, wenn gesamter Account gesichert werden soll.
        $verzeichnis = "/domain/contao/";
        
        // Auszuschließende Ressourcen
        $ignorieren = array("*.sql.gz", "*.tar.gz", "usage", "logs");
    
        // Domaindaten
        $subdomain = "Sudomain, z.B. www";
        $domain = "Domain, z.B. domain.de";
    
        // PEAR-Klasse einbinden und Archiv erstellen
        $pfad = preg_replace('/(\/www\/htdocs\/\w+\/).*/', '$1', realpath(__FILE__));
        include "Archive/Tar.php";
        $archivname = "ftp-backup_" . preg_replace('/.+\/(.+)\/$/', '$1', $pfad) . "_" . $subdomain . "." . $domain . date('_Y-m-d_His') . ".tar.gz";
        $archiv = new Archive_Tar($archivname, true);
        $archiv->setIgnoreList($ignorieren);
        $archiv->createModify($pfad.$verzeichnis, "", $pfad);
        $link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
        $link = str_replace(basename(__FILE__),$archivname,$link);
        echo "Das Backup der FTP-Daten ist fertig.";
        echo "<br /><br />";
        echo "Downloadlink: <a href='" . $link . "'>" . $archivname . "</a>";
    ?>

    Auch beim DB-Backup-Script habe ich den Domainnamen in den Archivnamen mit reingenommen sowie dann als Abschlussmeldung noch einen Downloadlink dazugenommen:

    Code:
    <?
    
         ######## Einstellungen #############################################
    
         $db_name = "Datenbankname";
         $db_passwd = "Datenbankpasswort";
         $subdomain = "Subdomain, z.B. www";
         $domain = "Domain, z.B. domain.de";
    
         $sql_file = "db-backup_" . $db_name . "_" . $subdomain . "." . $domain . "_" . date('Y-m-d_His') . ".sql";
    
         ####################################################################
    
         exec("mysqldump -u $db_name -p'$db_passwd' --allow-keywords --add-drop-table --complete-insert --quote-names $db_name > $sql_file");
         exec("gzip $sql_file");
    
         $datei = $sql_file . ".gz";
         $link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
         $link = str_replace(basename(__FILE__),$datei,$link);
         echo "Das Backup der DB-Daten ist fertig.";
         echo "<br /><br />";
         echo "Downloadlink: <a href='" . $link . "'>" . $datei . "</a>";
    
    ?>

    Vielleicht kanns ja jemand gebrauchen...
    Joachim
    *** Kein Backup, kein Mitleid ***

  7. #7
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Joachim,

    verstehe ich

    PHP-Code:
    echo "Downloadlink: <a href='" $link "'>" $archivname "</a>"
    richtig, daß das Backup auf dem Webserver zum Download abgelegt wird und dann ohne Zugriffsschutz heruntergeladen werden kann?

    Finde ich nicht so glücklich. Andere Idee: Das Backup innerhalb des files/ Ordners der Contao Installation in einem geschützten (Contao 4: nicht freigegebenem) Unterordner ablegen. Dann sollte von außen niemand rankommen und berechtigte User können in der Dateiverwaltung des Backends zugreifen.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  8. #8
    Contao-Fan Avatar von jscholtysik
    Registriert seit
    19.06.2009.
    Ort
    München
    Beiträge
    366

    Standard

    Hi Andreas,


    nein, ich habe im Backup-Verzeichnis eine .htaccess und eine .htpasswd, so dass von außen keiner ohne Zugriffsdaten ran kommt und das Script aufrufen kann, nur der Cronjob oder ich selbst...
    Joachim
    *** Kein Backup, kein Mitleid ***

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •