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
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|