All-Incl.com-PHP-Skript zum Sichern und Wiederherstellen einer Datenbank

Dieses Skript ist eine automatisierte Datensicherung der Mysql Datenbank in der Nacht, die Sie mit Hilfe eines CronJobs anlegen können.

Folgende Schritte sind notwendig:

1. Legen Sie im FTP-Hauptverzeichnis Ihrer Domain einen Unterordner “backup” an.

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 folgendem Inhalt

<?php
 ######## einstellungen #############################################
 $db_name = "IhreDatenBank";
 $db_passwd = "IhrDatenBankPasswort";
 $downloadlink_erstellen = "ja";
 
 $bestaetigungsmail_senden = "ja";
 
 $bestaetigungsmail_adresse = "IhreMailAdresse";
 $bestaetigungsmail_betreff = "[BACKUP] Ihr Backupscript";
 
 $sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";
 
 ####################################################################
 ################## AB HIER BITTE NICHTS MEHR ÄNDERN!!! ################
 
 ### daten überprüfen
 if ( $db_name == "IhreDatenBank" or $db_passwd == "IhrDatenBankPasswort" )
 {
 die("FEHLER: Sie m&uuml;ssen zun&auml;chst Ihre Datenbankdaten im Script eingeben!");
 }
 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!";
 }
 }
 ?>

Zum Schluß müssen Sie nur noch den Zugriff auf das Verzeichnis mit htaccess sichern..

1 Gedanke zu “All-Incl.com-PHP-Skript zum Sichern und Wiederherstellen einer Datenbank

  1. Ich empfehle bei All-Inkl die automatische Sicherung von DBs und FTP, All-Inkl spendiert dazu vorinstalliert auf den Webhosts das 7z Modul für eine brauchbare Archivierung des Backups. Das ganze mit Filter, Ausschlüssen, Upload to FTP, Debug Ausgabe, Benachrichtigungsmail und mehr gibts hier.

Schreibe einen Kommentar

*