begin process at 2012 02 13 01:00:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > SAUVEGARDE DE BASE DE DONNÉES

SAUVEGARDE DE BASE DE DONNÉES


 Information sur la source

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Classé sous :sauvegarde, save, database, mysql, script Niveau :Débutant Date de création :01/08/2005 Vu :6 397

Auteur : scoder

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

voilà un script que j'ai trouvé il y a quelques temps pour sauvegarder ma base mysql. il faut uploader le script sur la racine du ftp et lancer le fichier.
je précise bien que le script n'est pas de moi, je l'avais mis il y a plusieurs mois sur le forum pour aider quelqu'un et il s'est avéré que plusieurs personnes étaient intéressées. je le mets donc avec les sources il servira peut être plus.

Source

  • voilà le script :
  • <?php
  • // indiquer ici le serveur base ("localhost" sur levillage et lycos,
  • "sql.free.fr" sur free, etc.)
  • $host="localhost";
  • //indiquer ici le nom de votre base (votrelogin_xxxx sur village, votrelogin_db sur lycos, votrelogin sur free)
  • $base="mabase";
  • // indiquer ici l'user/utilisateur base (votrelogin_xxxx sur village.org,
  • votrelogin sur lycos et free )
  • $user="root";
  • // indiquer ici le pass de votre base (pass particulier possible sur levillage, pass du compte sur lycos et free)
  • $pass="";
  • //////////////// remplir au moins ci-dessus: server nom login pass de la base
  • ////////////////////
  • //Par défaut toutes les tables sont sauvegardées à la racine (là où est ce
  • fichier)
  • // ajoutez entre les guillemets un critere de sélection, d'exclusion, un
  • dossier de stockage.
  • $exclus = ""; // Ne pas sauver les tables dont le nom contient.. ici:
  • "_index_" (utile pour Spip)
  • $prefixe = ""; // Ne sauver que les tables avec ce préfixe ex:
  • "spip_"
  • $dossier = ""; // Dossier de stockage de la sauvegarde ex:
  • "ecrire/data/" (utile pour Spip)
  • // Sauvegarde compressée par défaut. Remplacer true par false pour ne pas
  • compresser,
  • // ou si le serveur fait une erreur car il n'accepte pas la compression gz
  • $gz = true;
  • $format = "INSERT"; // utiliser l'instruction SQL INSERT
  • $insertComplet = true; // INSERT avec les noms des champs (sans: false)
  • echo "<br><H3>SAUVEGARDE DE VOTRE BASE DE DONNEES</H3>";
  • echo "<b>Sauvegarde FTP automatique,<br>puis vers votre ordinateur en cliquant
  • sur le lien</b><br>";
  • //CONNEXION
  • $link = mysql_connect($host, $user, $pass);
  • mysql_select_db($base) or die("Connexion impossible à la base de donnée
  • (vérifiez server nom login pass).");
  • function ecrire ($texte) {
  • global $fp, $_fputs;
  • $_fputs($fp, "$texte\n");
  • }
  • //calcul de la date
  • $temps = time();
  • $jour = date("j", $temps); //format numerique : 1->31
  • $annee = date("Y", $temps); //format numerique : 4 chiffres
  • $mois = date("m", $temps);
  • $heure = date("H", $temps);
  • $minutes = date("i", $temps);
  • //nom du fichier de sauvegarde: sauv_jj_mm_aaaa_nombase .gz si compressé ou
  • .sql si non compressé
  • if ($gz) $ext = ".gz";
  • else $ext = ".sql";
  • // pour éviter un éventuel téléchargement par un tiers, remplacez ci-dessous
  • "sauv_" par "wcoqp_" ou autre
  • $nom = $dossier . "sauv_" . $base . "_" . $prefixe . $jour. "_" . $mois. "_" .
  • $annee . $ext;
  • // PS: pas grand chose à voir, les pass sont écrits en crypté...
  • $date = "$jour/$mois/$annee a $heure" . "h" . $minutes;
  • //creation et ouverture du fichier
  • if ($gz) $fp = @gzopen($nom, "wb");
  • else $fp = fopen($nom, "wb");
  • if (! $fp) die("impossible de créer $nom.");
  • $_fputs = ($gz) ? gzputs : fputs;
  • //ecriture entete du fichier
  • ecrire("# sauvegarde de la base $base");
  • ecrire("# le $date");
  • // pour chaque table...
  • $res = mysql_list_tables($base, $link);
  • $num_rows = mysql_num_rows($res);
  • $i = 0;
  • while ($i < $num_rows)
  • {
  • $tablename = mysql_tablename($res, $i);
  • // éviter les tables avec le préfixe signalé par $prefixe
  • if (substr($tablename,0,strlen($prefixe)) != $prefixe) { echo
  • "<br><font color='pink'>> $tablename NON INCLUS ($prefixe non
  • souhaité)</font>";}
  • else {
  • // éviter les tables avec mot exclus signalé par $exclus
  • if (strstr($tablename, $exclus)) {echo "<br><font color='pink'>>
  • $tablename NON INCLUS ($exclus non souhaité)</font>";}
  • else{
  • // ecrire la structure de la table
  • echo "<br>$tablename : <font color='blue'> Structure
  • OK </font>";
  • ecrire("# structure de la table $tablename");
  • ecrire("DROP TABLE IF EXISTS `$tablename`;\n");
  • // requete de creation de la table
  • $query = "SHOW CREATE TABLE $tablename";
  • $resCreate = mysql_query($query);
  • $row = mysql_fetch_array($resCreate);
  • $schema = $row[1].";";
  • ecrire("$schema\n");
  • // ecrire le contenu de la table
  • echo "<font color='green'> Données OK </font>";
  • ecrire("# donnees de $tablename");
  • $query = "SELECT * FROM $tablename";
  • $resData = mysql_query($query);
  • if (mysql_num_rows($resData) > 0)
  • {
  • $sFieldnames = "";
  • if ($insertComplet)
  • {
  • $num_fields =
  • mysql_num_fields($resData);
  • for($j=0; $j < $num_fields; $j++)
  • {
  • $sFieldnames .=
  • "`".mysql_field_name($resData, $j) ."`";
  • if ($j<$num_fields-1) $sFieldnames .=
  • ", ";
  • }
  • $sFieldnames = "(" . $sFieldnames .
  • ")";
  • }
  • $sInsert = "INSERT INTO `$tablename`
  • $sFieldnames values ";
  • while($rowdata = mysql_fetch_assoc($resData))
  • {
  • $lesDonnees =
  • "<guillemet>".implode("<guillemet>,
  • <guillemet>", $rowdata)."<guillemet>";
  • $lesDonnees =
  • str_replace("<guillemet>", "'",
  • addslashes($lesDonnees));
  • if ($format == "INSERT") $lesDonnees =
  • "$sInsert($lesDonnees);";
  • ecrire("$lesDonnees\n");
  • }
  • }
  • }
  • $i++;
  • }
  • }
  • ecrire("# ------- fin ------------");
  • // fermer le fichier
  • if ($gz) gzclose($fp);
  • else fclose($fp);
  • echo "<br><br><b>Sauvegarde FTP finie !</b><br><br>";
  • echo "Fichier de sauvegarde : <font color='blue'> $nom </font>(" .
  • ceil(filesize("$nom")/1024) . " Ko).";
  • echo "<br><br><b>Pour le télécharger sur votre ordinateur:</b> <a
  • href='$nom'>CLIQUER ICI</a><br><br>";
  • echo "(N'oubliez pas de supprimer vos anciennes sauvegardes régulièrement)";
  • ?>

voilà le script :

<?php

// indiquer ici le serveur base ("localhost" sur levillage et lycos, 

"sql.free.fr" sur free, etc.)
$host="localhost";

//indiquer ici le nom de votre base (votrelogin_xxxx sur village, votrelogin_db sur lycos, votrelogin sur free)
$base="mabase";

// indiquer ici l'user/utilisateur base (votrelogin_xxxx sur village.org, 

votrelogin sur lycos et free )
$user="root";

// indiquer ici le pass de votre base (pass particulier possible sur levillage, pass du compte sur lycos et free)
$pass="";

//////////////// remplir au moins ci-dessus: server nom login pass de la base 

////////////////////

//Par défaut toutes les tables sont sauvegardées à la racine (là où est ce 

fichier)
// ajoutez entre les guillemets un critere de sélection, d'exclusion, un 

dossier de stockage.
$exclus = ""; // Ne pas sauver les tables dont le nom contient.. ici: 

"_index_" (utile pour Spip)
$prefixe = ""; // Ne sauver que les tables avec ce préfixe ex: 

"spip_"
$dossier = ""; // Dossier de stockage de la sauvegarde ex: 

"ecrire/data/" (utile pour Spip)

// Sauvegarde compressée par défaut. Remplacer true par false pour ne pas 

compresser,
// ou si le serveur fait une erreur car il n'accepte pas la compression gz
$gz = true;


$format = "INSERT"; // utiliser l'instruction SQL INSERT
$insertComplet = true; // INSERT avec les noms des champs (sans: false)


echo "<br><H3>SAUVEGARDE DE VOTRE BASE DE DONNEES</H3>";
echo "<b>Sauvegarde FTP automatique,<br>puis vers votre ordinateur en cliquant 

sur le lien</b><br>";

//CONNEXION
$link = mysql_connect($host, $user, $pass);
mysql_select_db($base) or die("Connexion impossible à la base de donnée 

(vérifiez server nom login pass).");

function ecrire ($texte) {
global $fp, $_fputs;
$_fputs($fp, "$texte\n");
}

//calcul de la date
$temps = time();
$jour = date("j", $temps); //format numerique : 1->31
$annee = date("Y", $temps); //format numerique : 4 chiffres
$mois = date("m", $temps);
$heure = date("H", $temps);
$minutes = date("i", $temps);

//nom du fichier de sauvegarde: sauv_jj_mm_aaaa_nombase .gz si compressé ou 

.sql si non compressé
if ($gz) $ext = ".gz";
else $ext = ".sql";

// pour éviter un éventuel téléchargement par un tiers, remplacez ci-dessous 

"sauv_" par "wcoqp_" ou autre
$nom = $dossier . "sauv_" . $base . "_" . $prefixe . $jour. "_" . $mois. "_" . 

$annee . $ext;
// PS: pas grand chose à voir, les pass sont écrits en crypté...

$date = "$jour/$mois/$annee a $heure" . "h" . $minutes;

//creation et ouverture du fichier
if ($gz) $fp = @gzopen($nom, "wb");
else $fp = fopen($nom, "wb");
if (! $fp) die("impossible de créer $nom."); 
$_fputs = ($gz) ? gzputs : fputs;

//ecriture entete du fichier
ecrire("# sauvegarde de la base $base");
ecrire("# le $date");

// pour chaque table...
$res = mysql_list_tables($base, $link); 
$num_rows = mysql_num_rows($res); 
$i = 0; 
while ($i < $num_rows) 
{ 
$tablename = mysql_tablename($res, $i); 
// éviter les tables avec le préfixe signalé par $prefixe
if (substr($tablename,0,strlen($prefixe)) != $prefixe) { echo 

"<br><font color='pink'>> $tablename NON INCLUS ($prefixe non 

souhaité)</font>";}
else {
// éviter les tables avec mot exclus signalé par $exclus
if (strstr($tablename, $exclus)) {echo "<br><font color='pink'>> 

$tablename NON INCLUS ($exclus non souhaité)</font>";}
else{
// ecrire la structure de la table
echo "<br>$tablename : <font color='blue'> Structure 

OK </font>";
ecrire("# structure de la table $tablename");
ecrire("DROP TABLE IF EXISTS `$tablename`;\n");
// requete de creation de la table 
$query = "SHOW CREATE TABLE $tablename"; 
$resCreate = mysql_query($query); 
$row = mysql_fetch_array($resCreate); 
$schema = $row[1].";"; 
ecrire("$schema\n"); 

// ecrire le contenu de la table 
echo "<font color='green'> Données OK </font>";
ecrire("# donnees de $tablename");
$query = "SELECT * FROM $tablename"; 
$resData = mysql_query($query); 
if (mysql_num_rows($resData) > 0) 
{ 
$sFieldnames = ""; 
if ($insertComplet) 
{ 
$num_fields = 

mysql_num_fields($resData); 
for($j=0; $j < $num_fields; $j++)
{
$sFieldnames .= 

"`".mysql_field_name($resData, $j) ."`";
if ($j<$num_fields-1) $sFieldnames .= 

", ";
}
$sFieldnames = "(" . $sFieldnames . 

")";
} 
$sInsert = "INSERT INTO `$tablename` 

$sFieldnames values "; 

while($rowdata = mysql_fetch_assoc($resData)) 
{ 
$lesDonnees = 

"<guillemet>".implode("<guillemet>,
<guillemet>", $rowdata)."<guillemet>"; 
$lesDonnees = 

str_replace("<guillemet>", "'",
addslashes($lesDonnees)); 

if ($format == "INSERT") $lesDonnees = 

"$sInsert($lesDonnees);"; 
ecrire("$lesDonnees\n"); 
} 
} 
}
$i++;
}
} 

ecrire("# ------- fin ------------");

// fermer le fichier
if ($gz) gzclose($fp);
else fclose($fp);


echo "<br><br><b>Sauvegarde FTP finie !</b><br><br>";
echo "Fichier de sauvegarde : <font color='blue'> $nom </font>(" . 

ceil(filesize("$nom")/1024) . " Ko).";

echo "<br><br><b>Pour le télécharger sur votre ordinateur:</b> <a 

href='$nom'>CLIQUER ICI</a><br><br>";
echo "(N'oubliez pas de supprimer vos anciennes sauvegardes régulièrement)";

?>



 Sources du même auteur

Source avec Zip GESTION DE BASE MYSQL
Source avec Zip Source avec une capture FORUM STYLE PHPBB ET AGENDA PERSONNALISÉ
Source avec Zip Source avec une capture PETIT COMPTEUR "GRAPHIQUE" AVEC STR_REPLACE

 Sources de la même categorie

Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE SUR BASE MYSQL FULLTEXT ET BOOLEAN AVEC ... par cod57
SYSTÈME DE PAGINATION AVEC BDD ET IMAGES (FICHIERS) par begueradj

 Sources en rapport avec celle ci

SONDAGE - VOTE - POLL (AVEC MYSQL) par hornet_bzz
Source avec Zip EXTEND MYSQLI par petibras
SAUVEGARDE D'UNE BASE DE DONNÉE, RESULTAT ENVOYER PAR EMAIL,... par 1030
Source avec Zip Source avec une capture SAUVEGARDE SQL ET DOSSIERS par frinux
Source avec Zip SAUVEGARDE DE BASE DE DONNÉES par ateaitys07

Commentaires et avis

Commentaire de malik7934 le 01/08/2005 19:54:56

Et mysqldump? Il me semble que c'est quand meme plus simple pour avoir une sauvegarde réutilisable!

Commentaire de Anthomicro le 02/08/2005 02:12:03

Salut,

le script ultra gourmand par excellence... Des requêtes dans une boucle, je donne pas longtemps pour la durée de vie de ton hébergement.

Commentaire de Nox le 02/08/2005 05:41:47

bien d'accord que mysqldump est plus rapide, mais on fais quoi quand le serveur accepte pas les applications et qu'on veut qd même sauvegarder.... ce script est-il conseillé ou il existe une autre solution ?

Commentaire de apxa le 02/08/2005 06:36:21

Iop,
c'est un bon sujet.

Have Fun ;)

Commentaire de scoder le 02/08/2005 13:21:30

comme dit plus haut je ne suis pas l'auteur de ce script, je le mets juste ici pensant qu'il sera peut être utile. personnellement j'ai été amené à l'utiliser car le temps d'exécution de la sauvegarde avec php myadmin était trop long, et c'était le premier script opérationnel que j'avais trouvé.
cela dit il est évident qu'il existe d'autres moyens de sauvegarder une BDD, je pense notament au script de Ashe pour ceux qui ont des forums PhpBB et dont les BDD sont trop volumineuses.

Commentaire de hector6603 le 02/08/2006 11:42:00

Moi j'adore :), c'est exactement ce que je voulais faire, merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Help Help sur un script [ par tarantula007 ] Je ne comprends pas pourquoi ce script marche pas:$rq1 = "SELECT nombre from 'compteur' where nom like 'cpt'";if (!($resultat = mysql_query($rq1, $lin ARG ! > MySQL: Unable to save result set in ... [ par antares7364 ] Bonjour,Un problème est survenu dans une de mes tables MySQL :lorsque j'essaie d'en afficher le contenu avec PHPMyAdmin ou par unautre script PHP, MyS connection mysql par script [ par boin ] Imaginons que je veuille acceder a une base mysql par un script php pour y faire des tas de modifs si ça me chante.Donc j'ai un Host pour acceder a ph affichage des contenus d'une table mysql [ par hedi2003 ] salut, je rencontre un problème d'affichage des enregistrements se trouvant sur une base de données. le code php contient un script d'insertion et un Erreur dans un script [ par philagui ] Bonjour,est-ce que quelqu'un pourrait me dire où est l'erreur dans ce script:$sql_query="SELECT Titre FROM Tableaux WHERE LIMIT 0,2";//Début de la que Sauvegarde base mysql ? [ par Joez ] Salut je voudrais savoir comment sauvegarder une base mysql en cliquant sur une urlMerciet est il possible d'envoyer cette base par email ? Je suis perdu dans ce script ! [ par pyranhaz ] Bonjour,Comment fait-on pour dire à MySQL si tu trouve l'info dans la table x ne met rien dans la table y et tu ferme la bdd alors que dans le cas con semaphore [ par veneur59 ] Existe-t-il un moyen sur utilisant php et éventellementMySql de vérouiller une ressource quelconque (tablesMySQL, fichier, opération php de mise à jou image et GD [ par papipsycho ] salut a tous voila jai un pb donc jai un script qui marche tres bien pour cree des image et prendre des inf dans ma BDD(un script que jai recupere ici Aide pour un new script [ par Marshall_Mathers ] Salut tous le monde,J'explique le topo : Je voudrais que les visiteurs puissent ecrire un message pour qu'ensuite il apparaisse pendant une periode do


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales