Script PHP pentru backup și restaurarea unei baze de date: Creare dump - cu notificare prin e-mail
Pas 1:
Atenție: bazele de date mai mari s-ar putea să nu mai poată fi salvate prin script, deoarece scriptul poate întâmpina restricții de pe server!
Următorii pași sunt necesari:
1. Creează în directorul principal (FTP) al domeniului tău o sub-folosește numită „backup”.
2. Creează în folder un fișier PHP (db_backup.php) cu următorul conținut:
<?php
######## setări #############################################
$db_name = "NumeleTăuBazei";
$db_passwd = "ParolaBazeiTale";
$downloadlink_erstellen = "ja";
$bestaetigungsmail_senden = "ja";
$bestaetigungsmail_adresse = "AdresaTaMail";
$bestaetigungsmail_betreff = "[BACKUP] backupscriptul tău";
$sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";
####################################################################
################## DE AICI ÎNCOACE NU MAI SCHIMBA NIMIC!!! ################
### verifică datele
if ( $db_name == "NumeleTăuBazei" or $db_passwd == "ParolaBazeiTale" )
{
die("EROARE: Mai întâi trebuie să introduci datele bazei de date în script!");
}
if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
{
die("EROARE: Dump-ul care urmează să fie creat există deja!");
}
## creează dump-ul
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");
### află mărimea
$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]";
### creează mesajul
$message = "Backup-ul tău pentru baza de date <b>" . $db_name . "</b> a fost făcut.<br>";
$message .= "Mărimea dump-ului creat este <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 .= "Link de descărcare: <a href=" . $link . ">" . $datei . "</a>";
}
## afișează mesajul
echo $message;
### trimite 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>EROARE: Mailul nu a putut fi trimis, adresa e nevalidă!";
}
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("EROARE: Mailul nu a putut fi trimis din cauza unei erori necunoscute");
echo "<br>Mailul de confirmare a fost trimis cu succes!";
}
}
?>
Te rog schimbă în codul sursă următoarele 3 rânduri:
$db_name = "NumeleTăuBazei";
$db_passwd = "ParolaBazeiTale";
$bestaetigungsmail_adresse = "AdresaTaMail";
Numele bazei de date și parola bazei de date le iei din KAS (administrare tehnică) la Baze de date și le pui în câmpurile respective „NumeleTăuBazei” și „ParolaBazeiTale”. La „AdresaTaMail” setează adresa de e-mail la care vrei să primești mailul de confirmare.
Atenție: creează în KAS (administrare tehnică) pentru folderul de backup o protecție de director prin Tools -> Verzeichnisschutz an! Așa îți protejezi copiile de siguranță ale bazei de date împotriva accesului neautorizat.
4. Deschide URL-ul http://www.ihre-adresse-im-netz.de/backup/db_backup.php. Scriptul de backup pornește, face o copie de siguranță a bazei tale de date și o copiază ca fișier comprimat cu numele de ex. dumpDATUM.sql.gz în folderul „backup”.
Este normal ca backup-ul DB să fie mai mic decât îți arată dimensiunea bazei de date în phpMyAdmin.Căutați în Suport & FAQ