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..