Accueil > > > SAUVEGARDE DE BASE DE DONNÉES
SAUVEGARDE DE BASE DE DONNÉES
Information sur la source
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
Sources de la même categorie
Commentaires et avis
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
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|