Page 1 sur 1

Destination de sauvegarde avec un mysqldump()

Posté : 04 sept. 2009, 13:40
par jay64
Bonjour,

Actuellement, je lance manuellement un script pour sauvegarder ma BDD. Il m'est demandé l'emplacement en local où sauvegarder et ça marche très bien. le code actuel est le suivant:
$host = "dbxxx.1and1.fr"; 
$user = "dboxxxxxx";
$pass = "xxxxxx"; // On définit les infos de la base de données
$db = "xxxxxx";
$date = date("d-m-Y"); // On définit le variable $date ( ici son format )

$backup = "cooldone_bdd-backup_".$date.".sql.gz";
// Utilise les fonctions système : MySQLdump & GZIP pour générer un backup gzipé
$command = "mysqldump -h$host -u$user -p$pass $db | gzip> $backup";
system($command);
// Démarre la procédure de téléchargement
$taille = filesize($backup);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/gzip");
header("Content-Disposition: attachment; filename=$backup;");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$taille);
@readfile($backup);
// Supprime le fichier temporaire du serveur
unlink($backup);
Je cherche maintenant à sauvegarder directement sur un dossier de mon espace d'hébergement, et d'automatiser l'exécution de ce script à l'aide d'une tache cron. Mon soucis est que je ne sais pas comment modifier le script pour ne plus sauvegarder en local mais lui indiquer en dur l'emplacement de la sauvegarde.

Pourriez-vous m'aider ?

merci !

Re: Destination de sauvegarde avec un mysqldump()

Posté : 04 sept. 2009, 14:28
par thehawk
Regarde du coté de file_put_contents()
Bye Hawk

Re: Destination de sauvegarde avec un mysqldump()

Posté : 04 sept. 2009, 16:47
par jay64
Merci mais je ne vois pas trop comment adapter mon code pour l'intégrer.
Un coup de pouce supplémentaire ?

Merci

Re: Destination de sauvegarde avec un mysqldump()

Posté : 04 sept. 2009, 17:39
par thehawk
Donc voici ton code :
$host = "dbxxx.1and1.fr";
$user = "dboxxxxxx";
$pass = "xxxxxx"; // On définit les infos de la base de données
$db = "xxxxxx";
$date = date("d-m-Y"); // On définit le variable $date ( ici son format )

$backup = "cooldone_bdd-backup_".$date.".sql.gz";
// Utilise les fonctions système : MySQLdump & GZIP pour générer un backup gzipé
$command = "mysqldump -h$host -u$user -p$pass $db | gzip> $backup";
system($command);
// Démarre la procédure de téléchargement
 // [1]
$taille = filesize($backup);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: application/gzip");
header("Content-Disposition: attachment; filename=$backup;");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$taille);
@readfile($backup);
// Supprime le fichier temporaire du serveur
unlink($backup);
il faut changer ton code à partir de [1]
rappel des variables : $backup => contient ton dump
donc on l'injecte directement :
if (file_put_contents  ( 'lefichieraveclabonnextension' , $backup) !== FALSE)
{
 echo 'Sauvegarde ok';
}
else
{ 
 echo 'sauvegarde failed'
}
Code fait de tête ;)
Bye hawk


Edit :
En réfléchissant plus de 30 secondes cela ne sert a rien ce que je t'ai indiqué...
regarde plutôt du cotés de :
rename( $backup , 'jesuislebonfichier/a/la/bonneadresse.tar.gz' );

Re: Destination de sauvegarde avec un mysqldump()

Posté : 04 sept. 2009, 18:07
par AB
Si ton répertoire de sauvegarde se nomme 'BDD' et qu'il est situé à la racine de ton site et si ce script est également situé à la racine de ton site :
$host = "dbxxx.1and1.fr";
$user = "dboxxxxxx";
$pass = "xxxxxx"; // On définit les infos de la base de données
$db = "xxxxxx";
$date = date("d-m-Y"); 

$repertoire_de_sauvegarde = 'BDD';

$backup = "cooldone_bdd-backup_".$date.".sql.gz";

$dirfile = $repertoire_de_sauvegarde.'/'.$backup;

$command = "mysqldump -h$host -u$user -p$pass $db | gzip> $backup";
system($command);

file_put_contents("$dirfile",$backup);