Ankündigung

Einklappen
Keine Ankündigung bisher.

Anpassung von Skripten für das Backup (Original von allinkl.com)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anpassung von Skripten für das Backup (Original von allinkl.com)

    Hallo liebe Mitstreiter,

    es gibt 2 Scripte die ich auch schon entsprechend angepasst habe. Allerdings habe ich nicht so wirklich Zeit das Ganze noch weiter zu optimieren, und, das ist der Hauptgrund, mich auch noch tiefgreifend in PHP einzuarbeiten.
    Daher suche ich kommerzielle Hilfe und bitte um kurze (etwaige) Einschätzung der Kosten!

    Das 1. Script sichert den Webspace=

    PHP-Code:
     <?
    // PHP-Konfiguration optimieren
    @error_reporting(E_ALL ^ E_WARNING ^ E_DEPRECATED);
    @ini_set("max_execution_time", 300);
    @ini_set("memory_limit", "256M");
    $home = $_SERVER[ 'DOCUMENT_ROOT' ];

    // zu sicherndes Unterverzeichnis
    // bleibt leer, wenn gesamter Account gesichert werden soll
    $verzeichnis = "";

    // tragen Sie hier das Zielverzeichnis für die Backups ein z.b. backup oder backup/januar
    // bleibt leer, wenn die Backups in dem Script Ordner abgelegt werden sollen
    $backupVerz = "001-backup/webspace-backup";

    // auszuschließende Ressourcen
    $ignorieren = array("*.sql.gz", "*.tar.gz", "usage", "001-backup", "logs");

    // Backup-Bezeichnung
    $backup_name = "beispiel_com";

    // Das aktuelle Datum ausgeben, Beispiel: 10.03.2001 um 17:16 Uhr
    $heute = date("d.m.Y \\u\\m H:i \\U\\h\\r");
    // echo $heute.'<br>';


    ####################################################################
    ####################################################################



    if( !empty( $backupVerz ) ){
    if( file_exists( "$home$backupVerz" ) ){
    if( !is_writable( "$home$backupVerz" ) )
    exit( "Das Verzeichnis $backupVerz ist nicht beschreibbar!" );
    }else{
    exit( "Bitte legen Sie vorher das Backup Verzeichnis an!" );
    }
    }
    else
    {
    if( !is_writable( getcwd() ) ){
    exit( "Das Script Verzeichnis ist nicht beschreibbar" );
    }
    }

    // Pruefungen abgeschlossen, okay jetzt kann es losgehen...
    echo "Das Backup beginnt...";

    // PEAR-Klasse einbinden und Archiv erstellen
    $pfad = preg_replace('/(\/www\/htdocs\/\w+\/).*/', '$1', realpath(__FILE__));
    include "Archive/Tar.php";
    // Der Domain- oder Backupname kann ergaenzt werden
    $archivname = $backup_name."--".preg_replace('/.+\/(.+)\/$/', '$1', $pfad).date('---Y-m-d---His').".tar.gz";  
    // ORIGINAL war=
    // $archivname = preg_replace('/.+\/(.+)\/$/', '$1', $pfad).date('---Y-m-d---His').".tar.gz";
    $archiv = new Archive_Tar($home . $backupVerz ."/". $archivname, true);
    $archiv->setIgnoreList($ignorieren);
    $archiv->createModify($home.$verzeichnis, "", $pfad);
    echo "\nDas Backup ist erledigt!"; // erzeugt einen Zeilenumbruch = \n


    /*
          
    3. Sollten Sie im Script ein separates Zielverzeichnis für die Backups angegeben haben, dann legen Sie dieses bei Bedarf noch an und vergeben Sie diesem über Ihr FTP-Programm die Berechtigungen (CHMOD) von 777. Ansonsten geben Sie dem Ordner, in dem Sie das Script angelegt haben, die Berechtigungen 777.

    4. Rufen Sie jetzt die URL http://ihre-domain.de/backup/ftp-backup.php auf.


    Das Backupscript wird gestartet und legt eine FTP-Sicherung Ihrer Daten als gepackte Datei mit dem Namen KAS-Login_YYYY-MM.DD_ZEIT.tar.gz in dem gewünschten Ordner an. Je nach Größe der zu packenden Daten dauert dieser Vorgang mehrere Minuten.

    Dieses Script eignet sich auch für eine automatisierte Datensicherung in der Nacht, die Sie mit Hilfe eines CronJobs im KAS anlegen können. Bitte beachten Sie dabei, dass eine Ausführung einmal pro Woche ausreichend sein dürfte. Wenn Sie das Skript mehrfach einsetzen, achten Sie darauf, dass Sie die verschiedenen Cronjobs zu unterschiedlichen Zeiten ausführen lassen, um die Serverlast gering zu halten.

    Bitte laden Sie sich die Sicherungen regelmäßig mit einem FTP-Programm auf Ihren PC.
      


    ?>
    Ich habe auch schon gefunden das ich hiermit einen Zeitstempel erzeugen kann=

    PHP-Code:
    $heute date("d.m.Y \\u\\m H:i \\U\\h\\r"); 
    Allerdings ist mir nicht ganz klar, wie die exakte Schreibweise sein muss, so z.B.:
    PHP-Code:
    echo "\nDas Backup ist erledigt!" .$heute// erzeugt einen Zeilenumbruch = \n 
    Und kann ich dann die Funktion $heute auch für den Start verwenden? Also so:
    PHP-Code:
    echo "Das Backup beginnt..." .$heute
    Im 2. Script gibt es auch eine E-Mail und eine Download-Funktion, diese hätte ich auch gerne im 1. Script!!

    Hier das 2. Script:

    PHP-Code:
    <?php

    /*

    Dieses Skript eignet sich auch für eine automatisierte Datensicherung in der Nacht, die Sie mit Hilfe eines CronJobs anlegen können.
    Sollte Ihr Tarif keinen CronJob besitzen, so können Sie diesen in der MembersArea unter ZUSATZPTIONEN dazu bestellen
    und dann unter CronJobs einrichten. Beachten Sie bitte, dass größere Datenbanken u.U. nicht mehr per Skript gesichert werden können,
    da das Skript ggf. an Serverrestriktionen stößt!

    Folgende Schritte sind notwendig:

    1.    Legen Sie im FTP-Hauptverzeichnis Ihrer Domain einen entsprechenden Unterordner an.
        Ich empfehle= 001-backup - da dieser Ordner dann ganz oben positioniert ist
    2.     Geben Sie über Ihr FTP-Programm dem Ordner eine Schreibberechtigung (CHMOD) von 777.
    3.     Erstellen Sie in dem Ordner eine PHP-Datei (db_backup.phpx) mit dem nachfolgendem Inhalt:


    Bitte aendern Sie im Quellcode folgende 4 Zeilen:

    $db_name = "IhreDatenBank";
    $db_passwd = "IhrDatenBankPasswort";
    $bestaetigungsmail_adresse = "IhreMailAdresse";
    $backup_name = "datenbank-beispieldomain";

    Den Datenbanknamen und das Datenbankpasswort entnehmen Sie Ihrem KAS unter DATENBANK und setzen es in die
    jeweiligen Felder "IhreDatenBank" und "IhrDatenBankPasswort".
    Bei "IhreMailAdresse" setzen Sie bitte die E-Mail Adresse, an die Sie die Bestätigungsmail haben möchten, ein.

    Achtung:
    Legen Sie bitte zusätzlich für das Backup Verzeichnis einen Verzeichnisschutz über
    KAS -> Tools -> Verzeichnisschutz an! Somit schützen Sie Ihre Datenbanksicherungen vor unberechtigten Zugriffen.
    4. Rufen Sie die URL http://www.ihre-adresse-im-netz.de/backup/db_backup.phpx auf. Das Backupskript wird gestartet,
    legt eine Datenbanksicherung Ihrer MySQL-Datenbank an und kopiert diese als gepackte Datei mit dem Namen z.B. dumpDATUM.sql.gz in den Ordner „backup“.

    Es ist normal, dass das DB-Backup kleiner ist als Ihnen die Datenbankgröße im PHPMyAdmin angezeigt wird.



    */


    ######## einstellungen #############################################
    // Verwenden Sie die exakte Bezeichnung der Datenbank aus dem kasserver unter DATENBANK
    $db_name "IhreDatenBank";
    // Verwenden Sie das exakte Passwort Ihrer Datenbank aus dem kasserver unter DATENBANK
    $db_passwd "IhrDatenBankPasswort";
    // Backup-Bezeichnung
    $backup_name "datenbank-beispieldomain";


    $downloadlink_erstellen "ja";
    $bestaetigungsmail_senden "ja";

    $bestaetigungsmail_adresse "IhreMailAdresse";
    $bestaetigungsmail_betreff "Datenbank von ---Ihre-Bezeichnung--- wurde gesichert";

    # Original war= $sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";
    $sql_file $backup_name."--"$db_name "_" date('Ymd_Hi') . ".sql";

    #######################################################################
    ################## AB HIER BITTE NICHTS MEHR ÄNDERN!!! ################

    ### daten überprüfen
    if ( $db_name == "IhreDatenBank" or $db_passwd == "IhrDatenBankPasswort" or $backup_name == "datenbank-beispieldomain")
    {
    die(
    "FEHLER: Sie m&uuml;ssen zun&auml;chst Ihre Datenbankdaten und Ihre eigene Backup-Bezeichnung im Script eingeben! Bitte korrigieren");
    }
    if ( 
    file_exists($sql_file) or file_exists($sql_file ".gz") )
    {
    die(
    "FEHLER: Das zu erstellende Dump existiert bereits!");
    }

    ## dump erstellen
    exec("mysqldump -u $db_name -p'$db_passwd' --quick --allow-keywords --add-drop-table --complete-insert --quote-names $db_name >$sql_file");
    exec("gzip $sql_file");

    ### größe ermitteln
    $datei $sql_file ".gz";
    $size filesize($datei);
    $i 0;
    while ( 
    $size 1024 )
    {
    $i++;
    $size $size 1024;
    }
    $fileSizeNames = array(" Bytes"" KiloBytes"" MegaBytes"" GigaBytes"" TerraBytes");
    $size round($size,2);
    $size str_replace("."","$size);
    $groesse "$size $fileSizeNames[$i]";

    ### nachricht erstellen
    $message "Ihr Backup der Datenbank <b>" $db_name "</b> wurde durchgef&uuml;hrt.<br>";
    $message .= "Die Gr&ouml;&szlig;e des erstellten Dumps betr&auml;gt <b>" $groesse "</b>.<br>";

    if (
    $downloadlink_erstellen == "yes" or $downloadlink_erstellen == "ja" or $downloadlink_erstellen == "1")
    {
    $link 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    $link str_replace(basename(__FILE__),$datei,$link);
    $message .= "Downloadlink: <a href=" $link ">" $datei "</a>";
    }

    ## nachricht ausgeben
    echo $message;

    ### mail versenden
    if ($bestaetigungsmail_senden == "yes" or $bestaetigungsmail_senden == "ja" or $bestaetigungsmail_senden == "1")
    {
    if(!
    preg_match'/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/' $bestaetigungsmail_adresse))
    {
    echo 
    "<br>FEHLER: Mail konnte nicht versendet werden, da die Adresse ung&uuml;ltig ist!";
    }
    else
    {
    mail($bestaetigungsmail_adresse$bestaetigungsmail_betreff,
    $message,"From: backupscript@{$_SERVER['SERVER_NAME']}\r\n" "Reply-To: backupscript@{$_SERVER['SERVER_NAME']}\r\n" "Content-Type: text/html\r\n")
    or die(
    "FEHLER: Mail konnte wegen eines unbekannten Fehlers nicht versendet werden");
    echo 
    "<br>Best&auml;tigungsmail wurde erfolgreich versandt!";
    }
    }
    ?>

  • #2
    backupscript für cron:
    http://broexperts.com/2012/06/how-to...tar-cron-jobs/
    verlinkt:
    http://broexperts.com/2016/02/how-to...g-tar-utility/

    Dein download kannste auch anders machen, Dir einfach alle tars im Verzeichniss anschauen und bei bedarf draufklicken ( no programming at all).

    DB Backup wurde hier im Forum und sonst im Netz viel diskutiert.

    Kommentar


    • #3
      Vielen Dank für Deine Links.
      Allerdings habe ich keinen Rootserver. Die oben genannten Skripte sind ja bereits an einigen Stellen angepasst und funktionieren einwandfrei. Selbstverständlich auch per Cron Job...
      Daher hätte ich gerne die in meinem ersten Post genannten Erweiterungen.

      Kommentar

      Lädt...
      X