Contao Konferenz 2019 in Duisburg - Call for Papers
Ergebnis 1 bis 5 von 5

Thema: Automatisches Backup von Files Ordner via Cronjob

  1. #1
    Contao-Fan Avatar von dirksche
    Registriert seit
    05.08.2009.
    Ort
    Grosslittgen
    Beiträge
    567

    Standard Automatisches Backup von Files Ordner via Cronjob

    Hallo liebe Community,

    ich würde bei Webgo gerne via Cronjob jede Nacht Backup des Files Ordners machen. Kennt jemand ein gutes Script dafür? Ich denke PHP ist wegen der Laufzeitbeschränkung schlecht. Geht das auch über einen SSH Befehl z.B
    Code:
    zip -r Meine-Zipdate.zip Ordner/
    ?

  2. #2
    Contao-Fan Avatar von Stefko
    Registriert seit
    25.10.2012.
    Ort
    Karlsruhe
    Beiträge
    568
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von dirksche Beitrag anzeigen
    Hallo liebe Community,
    ich würde bei Webgo gerne via Cronjob jede Nacht Backup des Files Ordners machen. Kennt jemand ein gutes Script dafür? Ich denke PHP ist wegen der Laufzeitbeschränkung schlecht. Geht das auch über einen SSH Befehl z.B
    Code:
    zip -r Meine-Zipdate.zip Ordner/
    ?
    Für welche Contao Version?
    Für die 3er habe ich mir mal ein Skript gebastelt, dass ich per CronJob aufrufe, funktioniert tadellos. Sichert die Datenbank und die Dateien und löscht diese nach einer einstellbaren Zeit ($days) wieder.
    Für Contao 4 müsste es angepasst werden.
    Nachtrag: das Skript in den Contao-Wurzelordner packen und per Cronjpb aufrufen, dann funktioniert es auch mit Contao4

    PHP-Code:
    <?php
        
        
    // Variablen für das Backup
        
    $dbHost "localhost";                    // Datenbank Host
        
    $dbDatabase "database";                // Name der Datenbank
        
    $dbUser "user";                        // Datenbank User
        
    $dbPass "password";                    // Datenbank Passwort
        
    $project "Projektname";                // Projektname
        
    $root "https://domain.tld/";            // Http-Pfad der Installation mit / am Ende
        
    $path "Backup-Folder";                 // Ordner für Sicherung (Ordner muss existieren)
        
    $prefix "backup";                        // Backup Name (Daten)
        
    $date date("Y-m-d_H-i-s");            // Datumsformat (für Filename)
        
    $days 14;                                // Angabe in Tagen nach denen Sicherungen gelöscht werden sollen
        
        
        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        // Ab hier keine Änderungen mehr nötig
        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        
        // Datenbank sichern und als gz-Archiv ablegen
        
    shell_exec('mysqldump -h '.$dbHost.' -u '.$dbUser.' -p'.$dbPass.' '.$dbDatabase.'  | gzip > '.$path.'/'.$date.'_'.$dbDatabase.'.sql.gz');
        
        
    // Daten sichern und als gz-Archiv ablegen
        
    shell_exec('tar --exclude=\''.$path.'\'* -cvpzf '.$path.'/'.$date.'_'.$prefix.'.tar.gz ./* .??*');
        
        
    // Textausgabe
        
    echo '<p>Die <strong>'.$project.'</strong> Sicherung wurde am <strong>'.$date.'</strong> erstellt.</p>';
        echo 
    '<h2>Download:</h2>';    
        echo 
    '<ul><li><a href='.$path.'/'.$date.'_'.$dbDatabase.'.sql.gz'.'>Datenbank</a></li>';
        echo 
    '<li><a href='.$path.'/'.$date.'_'.$prefix.'.tar.gz'.'>Datenstruktur</a></li></ul>';

        
        
    // Ältere DB-Sicherungen löschen
        
    function delete_older_than($dir$max_age) {
                    
    $list = array();
                    
    $limit time() - $max_age;
                    
    $dir realpath($dir);
                    if (!
    is_dir($dir)) {
                      return;
                    }
                    
    $dh opendir($dir);
                    if (
    $dh === false) {
                      return;
                    }
                    while ((
    $file readdir($dh)) !== false) {
                      
    $file $dir '/' $file;
                      if (!
    is_file($file)) {
                        continue;
                      }
                      if (
    filemtime($file) < $limit) {
                        
    $list[] = $file;
                        
    unlink($file);
                      }
                    }
                    
    closedir($dh);
                    return 
    $list;
        }

        
    $deleted delete_older_than($path3600*24*$days);
        
        echo 
    '<hr><p>'.count($deleted)." alte Backups gelöscht:<br>" .implode("<br>"$deleted);
        
    ?>
    Geändert von Stefko (08.02.2019 um 10:26 Uhr)
    Grüße, Stefko

  3. #3
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.299

    Standard

    Ich hatte das Shell-Skript so ähnlich schon mal im Forum gepostet:

    backup.sh im Server-Root:
    Code:
    #!/bin/bash
    
    # Speicherpfad und Datum
    
    backup_path="/backup/web"
    date=$(date +"%Y%m%d_%H%M")
    
    # Zum Speicherpfad wechseln
    
    cd $backup_path
    
    # Standard-Dateieigenschaften setzen
    
    umask 640
    
    # Webspace rekursiv sichern
    
    zip -r contao_templates_$date.zip /webseiten/schachbund/dsbweb.2018/templates/
    zip -r contao_system_modules_$date.zip /webseiten/schachbund/dsbweb.2018/system/modules/
    zip -r contao_system_config_$date.zip /webseiten/schachbund/dsbweb.2018/system/config/
    zip -r schachbl_$date.zip /webseiten/schachbund/dsbweb.2018/web/SchachBL/
    Mit einem Cronjob wird das Skript einmal täglich aufgerufen.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  4. #4
    Contao-Fan
    Registriert seit
    19.06.2009.
    Ort
    Mittelhessen
    Beiträge
    428

    Standard

    Ich lasse das Backup nur über den Cronjob laufen und sichere die Daten für Contao 4 nach dem Artikel von Contao 4.4 kopieren und umziehen von Erdmann & Freunde. Hatte mir das zuletzt mal für mich zusammengestrickt und hoffe, dass ich damit alles vernünftig sichere.

    Dateien
    Code:
    tar cfvz /home/www/backup/contao/backup_$(date +\%F_\%H\%M\%S)_files.tar.gz /home/www/.../contao-4-lts/composer.json /home/www/.../contao-4-lts/files /home/www/.../contao-4-lts/templates /home/www/.../contao-4-lts/system/config /home/www/.../contao-4-lts/app/config
    Die db sichere ich auch über einen Cronjob
    Code:
    mysqldump -P3306 -hlocalhost -uwebxx_x -pPASSWORD webxx_dbx --allow-keywords --add-drop-table --complete-insert --quote-names --ignore-table=webxx_dbx.tl_search --ignore-table=webxx_dbx.tl_search_index | gzip > /home/www/backup/contao/backup_$(date +\%F_\%H\%M\%S)_db_webxx_dbx.sql.gz
    Die Zugangsdaten und Pfade müssen natürlich angepasst werden.
    Geändert von andre.5tz (26.04.2018 um 17:35 Uhr)

  5. #5
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.606
    User beschenken
    Wunschliste

    Standard

    Reoback http://reoback.sourceforge.net/#Downloads (Tar Ball) ist auch ein brauchbares PearlScript für Dateisicherungen welches man über einen Cronjob laufen lassen kann. Cron-Aufruf:
    Code:
    /home/www/cgi-bin/reoback/run_reoback.sh
    Über zwei conf-Dateien kann man diverse Einstellungen vornehmen. U.a.
    • welche Ordner oder Dateien gesichert werden sollen
    • inkrementelles Sichern
    • Aufbewahrungszeit der Sicherungen
    • Sicherung auf einen zweiten Server verschieben

    Ich hatte mir das Script ganz leicht angepasst, weil mir ein paar Kleinigkeiten nicht gefielen. Hier die Anpassung und die Original pl-Datei zum Vergleichen mit der letzten Version public.andreasburg.de/contao/reoback.zip
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

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
  •