Salut la famille!
Je souhaiterai faire une sauvegarde de ma base de donnée avec mysqldump.
Je suis sur Mamp - Mac OS X (10.8.5)
Pour cela j'ai crée un fichier " backup.bash" (j'y ai les droits en lecture, écriture et exécution).
Voici le code du fichier BASH:
#!/bin/bash
echo Sauvegarde de la base de production $(date +"%d/%m/%y %H:%M:%S")
file=/Applications/MAMP/htdocs/cakephp/app/webroot/backump.$(date +%y%m%d-%H%M%S).dump.sql
mysqldump -hlocalhost -uroot -proot --single-transaction test > $file
echo Terminee a $(date +"%d/%m/%y %H:%M:%S")
Puis dans mon controller j'ai le code suivant :
public function admin_exp(){
if (exec("/Applications/MAMP/htdocs/cakephp/app/webroot/exemple.bash")){
$this->Session->setFlash(__('The command bash backup of data is saved!! Thanks'));
} else {
$this->Session->setFlash(__('The script dont work!! Damn it!!!'));
}
return $this->redirect(array('action' => 'index'));
}
et dans la vue c'est juste le boutton suivant :
...
<?php echo $this->Form->postButton("Démarrer la commande BASH...", array('action' => 'admin_exp'), array('class' => 'btn')); ?>
...
Ca ne marche pas et pas de message d'erreur. Le script fonctionne bien quand je le lance dans TERMINAL. J'oubliais, le fiche bash est dans le WEBROOT.
Si quelqu'un a un équivalent sous WINDOWS je suis preneur aussi, j'essaierai d'adapter!
Merci à tous d'avance!!
Ce fut laborieux!!
C'est problème de chemin, dans le fichier bash il faut mettre le chemin complet où se trouve mysqldump.
la bonne syntaxe est :
/Applications/MAMP/Library/bin/mysqldump -hlocalhost -uroot -proot --single-transaction test | gzip > $file.gz
ici j'ai rajouté gzip pour avoir un fichier compressé.
Bon dimanche à tous!