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!!

1 réponse


Sean78
Auteur
Réponse acceptée

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!