Backup BDD vide

worms_x
Invité n'ayant pas de compte PHPfrance

19 janv. 2011, 19:19

Bonjour voilà j 'ai lance un script php pour sauvegarder sur un serveur linux la BDD.

Code : Tout sélectionner

$rep="tmp"; $backup = "database-backup_".$date.".sql.gz"; $dirfile = $rep.'/'.$backup; $command = "/usr/local/bin/mysqldump -h".$host.". -u".$user.". -p".$pass.". ".$bdd." | gzip> ".$backup; exec($command); file_put_contents("$dirfile",$backup);
Dans mon répertoire tmp j 'ai bien le fichier zippé mais il est vide...

J'ai tout essayé niveau commande et path vers mysqldump , le truc reste tout le temps vide..

HELP !!!

MErci ;)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 janv. 2011, 20:23

Bonjour,

Peut être tu as quelques erreurs de syntaxe dans l'instruction mysqldump car il manque quelques espaces entre les arguments et leurs commutateurs. Et aussi il y a des points qui ne devraient pas être là (mis à part les points de concaténation).
Voici un exemple de bonne syntaxe:
mysqldump -h localhost -u root -p 123 dbTest | gzip >/home/me/mondossier/dbTest.sql

Et voici le correctif de ton code:
$command = "/usr/local/bin/mysqldump -h ".$host." -u ".$user." -p ".$pass." ".$bdd."| gzip >".$backup;
Ou bien, celle-là avec des paramètres au lieu de commutateurs:
$command = "/usr/local/bin/mysqldump --host=".$host." --user=".$user." --password=".$pass."   ".$bdd." | gzip >".$backup;
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

worms_x
Invité n'ayant pas de compte PHPfrance

20 janv. 2011, 13:07

Bonjour,

donc voilà j'ai mis ce code avec votre correctif

Code : Tout sélectionner

$rep="tmp"; $backup = "database-backup_".$date.".sql.gz"; $dirfile = $rep.'/'.$backup; $command = "/usr/bin/mysqldump --host=".$host." --user=".$user." --password=".$pass." ".$bdd." | gzip >".$backup; $sauvegarde =exec($command); file_put_contents("$dirfile",$backup); if($sauvegarde != false) { echo("<p>Sauvegarde effectuée</p>\n"); } else { echo("<p>Sauvegarde echouée</p>\n"); } }
J'ai le zip dans le rep mais toujours vide.

J'ai changé le path de mysqldump car il n'était pas dans usr/local/bin mais dans usr/bin . Le server path est bien usr/bin . Donc là je vois vraiment pas ce qui coince...

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

20 janv. 2011, 13:23

Je n'avais pas vu, cette instruction doit poser des problèmes :
file_put_contents("$dirfile",$backup);
il n'est pas logique de l'utiliser, car elle réécrit ton fichier backup et c'est normal qu'il soit vide. Je ne vois pas d'ailleurs pour quoi tu fais un file_put_contents ??? vu que mysqldump suffit pour écrire ton fichier backup.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

worms_x
Invité n'ayant pas de compte PHPfrance

20 janv. 2011, 13:47

Effectivement ,je pensais qu'il fallait utiliser cela pour rediriger le fichier dans le bon répertoire mais ça le fait automatiquement si on le précise dans la variable $backup.

J'ai supprimé la fonction et l'archive est bien réalisée !

Merci beaucoup ;)

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

20 janv. 2011, 15:11

Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène