Destination de sauvegarde avec un mysqldump()

Eléphant du PHP | 331 Messages

04 sept. 2009, 13:40

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 !

Mammouth du PHP | 991 Messages

04 sept. 2009, 14:28

Regarde du coté de file_put_contents()
Bye Hawk
DevOps, Symfony4, Hoa

Eléphant du PHP | 331 Messages

04 sept. 2009, 16:47

Merci mais je ne vois pas trop comment adapter mon code pour l'intégrer.
Un coup de pouce supplémentaire ?

Merci

Mammouth du PHP | 991 Messages

04 sept. 2009, 17:39

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' );
DevOps, Symfony4, Hoa

ViPHP
AB
ViPHP | 5818 Messages

04 sept. 2009, 18:07

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);