PHP-Skript zum Sichern und Wiederherstellen einer Datenbank: Dump erstellen - mit E-Mail-Benachrichtigung


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 Unterordner "backup" an.

2. 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!";
}
}
?>


Bitte ändern Sie im Quellcode folgende 3 Zeilen:

$db_name = "IhreDatenBank";
$db_passwd = "IhrDatenBankPasswort";

$bestaetigungsmail_adresse = "IhreMailAdresse";

Den Datenbanknamen und das Datenbankpasswort entnehmen Sie Ihrer technischen Verwaltung (KAS) unter Datenbanken 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 in Ihrer technischen Verwaltung (KAS) für das Backup-Verzeichnis einen Verzeichnisschutz über 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.
Suche
in Titel
in Beschreibung