Script PHP pour sauvegarder et restaurer une base de données: Créer un dump - avec notification par e-mail

Étape 1:

Veuillez noter que les bases de données plus grandes peuvent ne plus être sauvegardées via un script, car le script peut rencontrer des restrictions serveur !

 

Les étapes suivantes sont nécessaires :

1. Créez un sous-dossier "backup" dans le répertoire principal FTP de votre domaine.

2. Créez un fichier PHP (db_backup.php) dans ce dossier avec le contenu suivant :

 

<?php
######## paramètres #############################################
$db_name = "VotreBaseDeDonnées";
$db_passwd = "VotreMotDePasseDB";
$downloadlink_erstellen = "oui";

$bestaetigungsmail_senden = "oui";

$bestaetigungsmail_adresse = "VotreAdresseMail";
$bestaetigungsmail_betreff = "[BACKUP] Votre script de sauvegarde";

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

####################################################################
################## NE RIEN MODIFIER À PARTIR D'ICI !!! ################

### vérifier les données
if ( $db_name == "VotreBaseDeDonnées" or $db_passwd == "VotreMotDePasseDB" )
{
die("ERREUR : Vous devez d'abord entrer vos données de base de données dans le script !");
}
if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
{
die("ERREUR : Le dump à créer existe déjà !");
}

## créer le 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");

### déterminer la taille
$datei = $sql_file . ".gz";
$size = filesize($datei);
$i = 0;
while ( $size > 1024 )
{
$i++;
$size = $size / 1024;
}
$fileSizeNames = array(" Octets", " KiloOctets", " MegaOctets", " GigaOctets", " TerraOctets");
$size = round($size,2);
$size = str_replace(".", ",", $size);
$groesse = "$size $fileSizeNames[$i]";

### créer le message
$message = "Votre sauvegarde de la base de données <b>" . $db_name . "</b> a été effectuée.<br>";
$message .= "La taille du dump créé est de <b>" . $groesse . "</b>.<br>";

if ($downloadlink_erstellen == "yes" or $downloadlink_erstellen == "oui" or $downloadlink_erstellen == "1")
{
$link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$link = str_replace(basename(__FILE__),$datei,$link);
$message .= "Lien de téléchargement : <a href=" . $link . ">" . $datei . "</a>";
}

## afficher le message
echo $message;

### envoyer le mail
if ($bestaetigungsmail_senden == "yes" or $bestaetigungsmail_senden == "oui" 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>ERREUR : Le mail n'a pas pu être envoyé, car l'adresse est invalide !";
}
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("ERREUR : Le mail n'a pas pu être envoyé en raison d'une erreur inconnue");
echo "<br>Le mail de confirmation a été envoyé avec succès !";
}
}
?>

 

Veuillez modifier les 3 lignes suivantes dans le code source :

$db_name = "VotreBaseDeDonnées";
$db_passwd = "VotreMotDePasseDB";

$bestaetigungsmail_adresse = "VotreAdresseMail";

Vous trouverez le nom de la base de données et le mot de passe dans votre KAS (gestion technique) sous Bases de données et les insérerez dans les champs respectifs "VotreBaseDeDonnées" et "VotreMotDePasseDB". Pour "VotreAdresseMail", veuillez entrer l'adresse e-mail à laquelle vous souhaitez recevoir le mail de confirmation.

Attention : Veuillez activer une protection de répertoire pour le dossier de sauvegarde dans le KAS (gestion technique) via Outils -> Protection de répertoire ! Cela protège vos sauvegardes de base de données contre les accès non autorisés.

4. Accédez à l'URL http://www.votre-adresse-sur-le-net.fr/backup/db_backup.php. Le script de sauvegarde démarre, crée une sauvegarde de votre base de données et la copie en tant que fichier compressé nommé par ex. dumpDATE.sql.gz dans le dossier « backup ».

Il est normal que la sauvegarde DB soit plus petite que la taille de la base de données affichée dans phpMyAdmin.
Quelle utilité avez-vous trouvée à ce guide ?

Support & FAQ rechercher

Seitensuche