Le script ci dessous permet de faire une sauvegarde compressée de la base de données MySQL dans le répertoire DB_Backup préalablement créé à la racine de votre site.
Le nom du script contient la date de la génération et j’ai rajouté une fonction qui permet d’effacer, après la génération de la sauvegarde, tous les fichiers de sauvegarde vieux de plus de $NbJours jours.

Script de sauvegarde utilisé sur mes sites hébergés chez 1&1.

<?php
$serveur          = "nom_serveur"
$utilisateur      = "nom_user";
$motDePasse       = "mdp";
$base             = "nom_BDD"; 
$dir_backup       = getenv('DOCUMENT_ROOT')."/DB_Backup";

MYSQL_CONNECT($serveur, $utilisateur, $motDePasse) or die ( "<h1>Serveur MySQL non disponible</h1>");
MYSQL_SELECT_DB($base) or die ( "<h1>Base non disponible</h1>");

// Génération du fichier de sauvegarde dans le répertoire $dir_backup
  system(sprintf(
    'mysqldump --opt -h%s -u%s -p"%s" %s | gzip > %s/SauveBD_'.date("d_n_Y_H_i_s").'.sql.gz',
    $serveur,
    $utilisateur,
    $motDePasse,
    $base,
    $dir_backup
  ));

$NbJours = 7;
// Suppression des vieux fichiers de sauvegarde 
   $folder = new DirectoryIterator($dir_backup);
    foreach($folder as $file){ 
       if( ($file->isFile()) && (!$file->isDot()) ) {
          if (time() - $file->getMTime() > $NbJours*24*3600) unlink($file->getPathname());   
       }
    }
?>

Attention, si votre base de données Mysql est trop lourde,  il est plus prudent de créer un fichier de sauvegarde par table.

Script de sauvegarde de la BDD pour bases lourdes

<?php
  $result = MYSQL_QUERY("SHOW TABLES");
  $numrow = MYSQL_NUM_ROWS($result);
  for($i = 0;$i < $numrow;$i++) {
    $table = MYSQL_RESULT($result,$i);
    // echo "Sauvegarde de la table ".$table;
    system(sprintf("mysqldump --opt -h $serveur -u $utilisateur -p"$motDePasse" $base $table | gzip > %s/$table.sql.gz",$dir_backup));
  }
?>
0 réponses

Laisser un commentaire

Participez-vous à la discussion?
N'hésitez pas à contribuer!

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.