PHP-skript för att säkerhetskopiera och återställa en databas: Skapa dump - med e-postavisering
Steg 1:
Observera att större databaser eventuellt inte längre kan säkerhetskopieras via skript, eftersom skriptet kan stöta på serverrestriktioner!
Följande steg behövs:
1. Skapa en undermapp som heter "backup" i domänens FTP-huvudkatalog.
2. Skapa en PHP-fil (db_backup.php) i mappen med följande innehåll:
<?php
######## inställningar #############################################
$db_name = "DinDatabas";
$db_passwd = "DittDatabaslösenord";
$downloadlink_erstellen = "ja";
$bestaetigungsmail_senden = "ja";
$bestaetigungsmail_adresse = "DinMailadress";
$bestaetigungsmail_betreff = "[BACKUP] ditt backupskript";
$sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";
####################################################################
################## ÄNDRA INGET MER HÄRIFRÅN!!! ################
### kolla upp data
if ( $db_name == "DinDatabas" or $db_passwd == "DittDatabaslösenord" )
{
die("FEL: Du måste först ange dina databasuppgifter i skriptet!");
}
if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
{
die("FEL: Dumpen som ska skapas finns redan!");
}
## skapa dump
exec("mariadb-dump -u $db_name -p'$db_passwd' --single-transaction --allow-keywords --complete-insert --insert-ignore --routines --events --force $db_name > $sql_file");
exec("gzip $sql_file");
### ta reda på storleken
$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]";
### skapa meddelande
$message = "Din backup av databasen <b>" . $db_name . "</b> har genomförts.<br>";
$message .= "Storleken på den skapade dumpen är <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 .= "Länk för nedladdning: <a href=" . $link . ">" . $datei . "</a>";
}
## skriv ut meddelandet
echo $message;
### skicka mail
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>FEL: Mail kunde inte skickas eftersom adressen är ogiltig!";
}
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("FEL: Mail kunde inte skickas på grund av ett okänt fel");
echo "<br>Bekräftelsemail skickades framgångsrikt!";
}
}
?>
Ändra följande 3 rader i källkoden:
$db_name = "DinDatabas";
$db_passwd = "DittDatabaslösenord";
$bestaetigungsmail_adresse = "DinMailadress";
Databasnamnet och databaslösenordet hittar du i din KAS (teknisk förvaltning) under Databaser och anger dem i respektive fält "DinDatabas" och "DittDatabaslösenord". För "DinMailadress" anger du e-postadressen som du vill få bekräftelsemailet till.
Obs: Skapa ett mappskydd i KAS (teknisk förvaltning) för backupkatalogen via Verktyg -> Mappskydd! Då skyddar du dina databasbackuppar mot obehörig åtkomst.
4. Öppna URL:en http://www.ihre-adresse-im-netz.de/backup/db_backup.php. Backupskriptet startas, skapar en säkerhetskopia av din databas och kopierar den som en paketerad fil med t.ex. namnet dumpDATUM.sql.gz till mappen „backup“.
Det är normalt att DB-backupen är mindre än den databassstorlek som visas för dig i phpMyAdmin.Sök i Support & FAQ