Script PHP per backup e ripristino di un database: Creare dump - con notifica e-mail

Passo 1:

Nota che database più grandi potrebbero non essere più salvabili tramite script, poiché lo script potrebbe incontrare restrizioni del server!

 

Passaggi necessari:

1. Crea una sottocartella "backup" nella directory principale del tuo dominio su FTP.

2. Crea un file PHP (db_backup.php) nella cartella con il seguente contenuto:

 

<?php
######## impostazioni #############################################
$db_name = "TuoDatabase";
$db_passwd = "TuaPasswordDatabase";
$downloadlink_erstellen = "sì";

$bestaetigungsmail_senden = "sì";

$bestaetigungsmail_adresse = "TuoIndirizzoMail";
$bestaetigungsmail_betreff = "[BACKUP] Tuo Script di Backup";

$sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";

####################################################################
################## NON MODIFICARE DA QUI IN POI!!! ################

### verifica dati
if ( $db_name == "TuoDatabase" or $db_passwd == "TuaPasswordDatabase" )
{
die("ERRORE: Devi prima inserire i dati del database nello script!");
}
if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
{
die("ERRORE: Il dump da creare esiste già!");
}

## crea 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");

### determinare dimensione
$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]";

### crea messaggio
$message = "Il tuo backup del database <b>" . $db_name . "</b> è stato effettuato.<br>";
$message .= "La dimensione del dump creato è <b>" . $groesse . "</b>.<br>";

if ($downloadlink_erstellen == "yes" or $downloadlink_erstellen == "sì" or $downloadlink_erstellen == "1")
{
$link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$link = str_replace(basename(__FILE__),$datei,$link);
$message .= "Link per il download: <a href=" . $link . ">" . $datei . "</a>";
}

## visualizza messaggio
echo $message;

### invia mail
if ($bestaetigungsmail_senden == "yes" or $bestaetigungsmail_senden == "sì" 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>ERRORE: Mail non inviata, indirizzo non valido!";
}
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("ERRORE: Mail non inviata per errore sconosciuto");
echo "<br>Mail di conferma inviata con successo!";
}
}
?>

 

Modifica le seguenti 3 righe nel codice sorgente:

$db_name = "TuoDatabase";
$db_passwd = "TuaPasswordDatabase";

$bestaetigungsmail_adresse = "TuoIndirizzoMail";

Prendi il nome del database e la password dal tuo KAS (gestione tecnica) sotto Database e inseriscili nei campi "TuoDatabase" e "TuaPasswordDatabase". In "TuoIndirizzoMail" inserisci l'indirizzo email a cui vuoi ricevere la mail di conferma.

Attenzione: Imposta una protezione per la directory nel KAS (gestione tecnica) per la cartella di backup tramite Strumenti -> Protezione directory! In questo modo proteggi i tuoi backup da accessi non autorizzati.

4. Visita l'URL http://www.tuo-indirizzo-nel-web.it/backup/db_backup.php. Lo script di backup verrà avviato, creerà un backup del tuo database e copierà questo file compresso con il nome ad esempio dumpDATA.sql.gz nella cartella “backup”.

È normale che il backup del DB sia più piccolo rispetto alla dimensione del database mostrata in phpMyAdmin.
Quanto utile hai trovato questa guida?

Supporto e FAQ

Seitensuche