Script de sauvegarde de votre base de données

Publié le 18 février 2008 par Avi Teboul

Hier je vous presentais un script de sauvegarde automatique de la base de données, malheureusement je me suis rendu compte par la suite que la fonction système qui exécute cette commande n'est pas compatible avec tous les hébergement s... Alors David du blog www.numb3rs.fr me transmet une solution plus adaptée.

Copier le code suivant que vous placerez dans un dossier spécial auquel vous aurez pris soin de définir un CHMOD 0777 pour permettre l'écriture dans le dossier ... exécutez la page et le tour est joué !


<?php
function svg_bdd($host,$user,$pass,$base) {
   //==========================================================================
   // création d'un fichier affichant en boucle le contenu des tuples de la base :
   //==========================================================================
   //on se connecte à la base
   mysql_connect($host, $user, $pass);
   mysql_select_db($base);
   //on récupère les tables de la base
   $tables = mysql_list_tables($base);
   while ($donnees = mysql_fetch_array($tables)) { //tant qu'on trouve des résultats, on créé un tableau
   $table = $donnees[0]; //on affecte la var table avec le premier élément du tableau qui correspond au nom de la table
   $res = mysql_query("SHOW CREATE TABLE ".$table);
   if($res){
   $insertions = "";
   $tableau = mysql_fetch_array($res);
   $tableau[1] .= ";";
   $dumpsql[] = str_replace("\n", "", $tableau[1]);
   $req_table = mysql_query("SELECT * FROM ".$table);
   $nbr_champs = mysql_num_fields($req_table);
   while($ligne = mysql_fetch_array($req_table)){
   $insertions .= "INSERT INTO ".$table." VALUES(";
   for ($i=0; $i<=$nbr_champs-1; $i++){
   $insertions .= "'".mysql_real_escape_string($ligne[$i])."', ";
   }
   $insertions = substr($insertions, 0, -2);
   $insertions .= ");\n";
   }
   if ($insertions != ""){
   $dumpsql[] = $insertions;
   }
   }
   }
   return implode("\r", $dumpsql);
}
file_put_contents("sauvegarde".date("Y-m-d").".sql", svg_bdd("localhost","USER","PASS","BASE"));
?>

Evidement c'est un peu rébarbatif d'avoir à exécuter cette manip tous les jours alors sur les conseils de weetabix je vous donne le lien de ce site qui vous permet de programmer des taches à heures régulières si votre hébergement ne vous permet d'avoir accès CRON