Sauvgarde SQL ?

Répondre
PHPDebutant
le 11/11/2005 à 18:53
PHPDebutant
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.
++
i M@N
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.
PHPDebutant
le 14/11/2005 à 18:30
PHPDebutant
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());

?>

@++ ...
LupusMic
le 15/11/2005 à 16:50
LupusMic
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.
LupusMic
le 15/11/2005 à 17:06
LupusMic
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.
i M@N
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.
PHPDebutant
le 15/11/2005 à 19:06
PHPDebutant
Bonjour,
Netclick n'accepte pas le script bash et je suis sour Windows XP. Donc lupusmic ta réponse ne sert à rien.
@6+
LupusMic
le 16/11/2005 à 14:06
LupusMic
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.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours