Sauvgarde SQL ?
Bonjour,
Lorsqe Netclick à fermé, je me suis trouvé un peu bêtê parce que je n'avais pas de sauvgarde SQL.
Mais, comme j'ai la flemme d'en faire une tout les jours, quel est le code de la rêquete SQL ?
Ensuite je le met sur le serveur et hop ... webcron.
++
Un petit UP ?
Et il y a pesonne
le 13/11/2005 à 17:48
i M@N
Hello !
Essaye ça :
<?php
function mysql_structure() {
$host = 'HOST';
$user = 'USER';
$pass = 'PASS';
$base = 'BASE';
mysql_connect($host, $user, $pass);
mysql_select_db($base);
$tables = mysql_list_tables($base);
while ($donnees = mysql_fetch_array($tables))
{
$table = $donnees[0];
$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);
}
echo "Taille du fichier : " . file_put_contents("sqldump-".date("Ymd").".sql", mysql_structure());
?>
@+...
One Love, One Heart, One Unity.
Bonjour
1) Merci, mais ça marche seulement sous PHP5.
2) Si on a PHP4 le code à inserer est :
<?php
function mysql_structure() {
$host = 'HOST';
$user = 'USER';
$pass = 'PASS';
$base = 'BASE';
mysql_connect($host, $user, $pass);
mysql_select_db($base);
$tables = mysql_list_tables($base);
while ($donnees = mysql_fetch_array($tables))
{
$table = $donnees[0];
$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);
}
if(!function_exists('file_put_contents')) {
function file_put_contents($filename, $data, $file_append = false) {
$fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
if(!$fp) {
trigger_error('file_put_contents ne peut pas écrire dans le fichier.', E_USER_ERROR);
return;
}
fputs($fp, $data);
fclose($fp);
}
}
echo "Fichier créer !" . file_put_contents("sqldump-".date("Ymd").".sql", mysql_structure());
?>
@++ ...
C'est un peu bourrin je trouve, un script shell fait ça aussi bien, si ce n'est plus simplement :
============8<============
#!/bin/sh
user=toto
pass=t0t0
host=localhost
bases="unebase deuxbase troisbase"
format=%h%m-%M%Y
for base in "$bases" ;
do
file=dump-$base-`date-$format`.gz
echo -n "Sauvegarde de la $base dans le fichier $file"
mysqldump -u$user -p$pass -h$host $base | gzip -c > $file >& /dev/null
if [ "0$?" -eq "00" ] ; then
echo " correct !"
else
echo " échoué !"
fi
done ;
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
C'est dommage qu'on ne puisse pas modifier ces messages :p
#!/bin/sh
user=toto
pass=t0t0
host=localhost
bases="unebase deuxbase troisbase"
format=%F-%R
for base in $bases ;
do
file=dump-$base-`date +$format`.gz
echo -n "Sauvegarde de la $base dans le fichier $file"
mysqldump -u$user -p$pass -h$host $base 2> /dev/null | gzip -c > $file 2> /dev/null
if [ "0$?" -eq "00" ] ; then
echo " correct !"
else
echo " échoué !"
fi
done ;
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
le 15/11/2005 à 17:40
i M@N
Hello !
Mwé pourquoi pas, mais moi je connais un peu PHP mais pas UNiX ou LiNUX et leurs scripts.
Donc ta réponse elle me sert à kedal à moins que tu m'expliques aussi comment je me sers de ton script sur mon server. ^^
@+...
One Love, One Heart, One Unity.
Bonjour,
Netclick n'accepte pas le script bash et je suis sour Windows XP. Donc lupusmic ta réponse ne sert à rien.
@6+
Ma réponse vous servira plus tard, ou à quelqu'un d'autre (quelqu'un qui cherchera dans Google avant de poser la question :p).
Il existe bash pour Microsoft Windows NT et suivants (Cygwin et MS SFU).
Pour utiliser le script, il suffit de le sauvegarder dans un fichier texte, et de le rendre exécutable.
Il faut bien sûr renseigner les variables avec les valeurs qui vont bien.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: