PHP-script voor back-up en herstel van een database: Dump maken - met e-mailmelding
Stap 1:
Let op, grotere databases kunnen mogelijk niet meer via een script worden geback-upt vanwege serverrestricties!
Volgende stappen zijn nodig:
1. Maak een submap "backup" aan in de hoofdmap van je domein op de FTP.
2. Maak in die map een PHP-bestand (db_backup.php) met de volgende inhoud:
<?php
######## instellingen #############################################
$db_name = "JouwDatabase";
$db_passwd = "JouwDatabaseWachtwoord";
$downloadlink_maken = "ja";
$bevestigingsmail_verzenden = "ja";
$bevestigingsmail_adres = "JouwMailAdres";
$bevestigingsmail_onderwerp = "[BACKUP] Jouw Backupscript";
$sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";
####################################################################
################## VANAF HIER NIETS MEER WIJZIGEN!!! ################
### gegevens controleren
if ( $db_name == "JouwDatabase" or $db_passwd == "JouwDatabaseWachtwoord" )
{
die("FOUT: Je moet eerst je databasegegevens in het script invoeren!");
}
if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
{
die("FOUT: De te maken dump bestaat al!");
}
## dump maken
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");
### grootte bepalen
$bestand = $sql_file . ".gz";
$size = filesize($bestand);
$i = 0;
while ( $size > 1024 )
{
$i++;
$size = $size / 1024;
}
$fileSizeNames = array(" Bytes", " KiloBytes", " MegaBytes", " GigaBytes", " TerraBytes");
$size = round($size,2);
$size = str_replace(".", ",", $size);
$grootte = "$size $fileSizeNames[$i]";
### bericht maken
$message = "Je backup van de database <b>" . $db_name . "</b> is uitgevoerd.<br>";
$message .= "De grootte van de gemaakte dump is <b>" . $grootte . "</b>.<br>";
if ($downloadlink_maken == "yes" or $downloadlink_maken == "ja" or $downloadlink_maken == "1")
{
$link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$link = str_replace(basename(__FILE__),$bestand,$link);
$message .= "Downloadlink: <a href=" . $link . ">" . $bestand . "</a>";
}
## bericht weergeven
echo $message;
### mail verzenden
if ($bevestigingsmail_verzenden == "yes" or $bevestigingsmail_verzenden == "ja" or $bevestigingsmail_verzenden == "1")
{
if(!preg_match( '/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/' , $bevestigingsmail_adres))
{
echo "<br>FOUT: Mail kon niet worden verzonden omdat het adres ongeldig is!";
}
else
{
mail($bevestigingsmail_adres, $bevestigingsmail_onderwerp,
$message,"From: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Reply-To: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Content-Type: text/html\r\n")
or die("FOUT: Mail kon door een onbekende fout niet worden verzonden");
echo "<br>Bevestigingsmail is succesvol verzonden!";
}
}
?>
Wijzig in de broncode de volgende 3 regels:
$db_name = "JouwDatabase";
$db_passwd = "JouwDatabaseWachtwoord";
$bevestigingsmail_adres = "JouwMailAdres";
De databasenaam en het databasewachtwoord vind je in je KAS (technisch beheer) onder Databases en vul je in de velden "JouwDatabase" en "JouwDatabaseWachtwoord" in. Bij "JouwMailAdres" vul je het e-mailadres in waar je de bevestigingsmail wilt ontvangen.
Let op: Stel in je KAS (technisch beheer) een mapbescherming in voor de back-upmap via Tools -> Mapbescherming! Zo bescherm je je databaseback-ups tegen onbevoegde toegang.
4. Roep de URL http://www.jouw-adres-op-het-net.nl/backup/db_backup.php op. Het backupscript wordt gestart, maakt een databaseback-up van je database en kopieert deze als een gecomprimeerd bestand met de naam bijvoorbeeld dumpDATUM.sql.gz in de map “backup”.
Het is normaal dat de DB-back-up kleiner is dan de databasegrootte die in phpMyAdmin wordt weergegeven.Support & FAQ doorzoeken