[RESOLU] Pb avec script de sauvegarde

Eléphanteau du PHP | 37 Messages

21 janv. 2012, 15:28

Bonjour,
je déclenche 2 scripts à 1 heure d'intervalle.
Le script 1 fonctionne bien, il me réalise la sauvegarde de ma base1 dans le dossier du script et me créer une sauvegarde dans année/jour
Le script 2 se déclenche une heure pour tard pour une base 2. Il me crée bien la sauvegarde quotidienne dans le dossier du script mais pas dans le dossier année/jour
Voici le script 1 et 2. il y a surement qques choses à modifier dans le script 2 pour qui mette aussi la sauvegarde dans année/jour

Code : Tout sélectionner

<?php // CONFIGURATION $host = "xxxxx.bdb"; $user = "xxxxxxbase"; $pass = "xxxxxxxxxx"; $db = "xxxxxxxxx"; $path = getcwd().'/'; // Répertoire où seront sauvegardés les dump, ici le répertoire du script // SCRIPT (ne rien modifier) if($_MYSQL = mysql_connect($host,$user,$pass)) { // Création des dossiers pour la sauvegarde quotidienne annee/jour if(!is_dir($path.date(Y).'/')) { mkdir($path.date(Y).'/'); // Si le dossier de l'annŽe n'existe pas, on le crŽe $result .= 'Création du dossier '.date(Y).' \n'; } // Si le dossier du annee/jour n'existe pas, on le crée et on fait la sauvegarde quotidienne $d = $path.date(Y).'/'.date(z).'/'; if(!is_dir($d)) { mkdir ($d, 0700); $daily = 1; $result .= 'CrŽation du dossier '.$path.$d.' \n'; } //$databases = mysql_list_dbs($_MYSQL); // On liste les bases sur le serveur // while ($dbs = mysql_fetch_array($databases)) { $file = $path.$db.'.sql.gz'; $command = "mysqldump --opt -h$host -u$user -p$pass $db | gzip > $file"; system($command); $result .= $db.' sauvegard&#233;'; if($daily == 1) { // On des fichiers dans le répertoire de la sauvegarde quotidienne copy($file,$d.$db.'.sql.gz'); $result .= ' + quotidienne '; } $result .= ' \n'; // } mysql_close($_MYSQL); } else $result = "Connexion au serveur MySQL impossible"; echo $result; ?>

ViPHP
xTG
ViPHP | 7331 Messages

21 janv. 2012, 20:37

Si les scripts sont les mêmes et qu'ils sont dans le même dossier...
As-tu regardé dans le error_log pour voir s'il y avait quelque chose après l'exécution du second script ?

Eléphanteau du PHP | 37 Messages

21 janv. 2012, 21:00

Il n'y a pas d'erreur dans le log. En fait comme le dossier jour existe déjà, cela ne fait pas la copie du dump.
Je ne sais pas comment modifier script pour que la copie se fasse dans le dossier jour après l’exécution du premier script.
Laurent

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 janv. 2012, 21:12

Ta copie est conditionnée par le fait que $daily soit égal à 1... le problème c'est que ton flag $daily = 1 n'est défini que lors de la création du dossier... donc forcément si le dossier existe déjà ton flag ne passe pas à 1 et la copie n'est pas faite... faut revoir ton algo :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 37 Messages

21 janv. 2012, 21:17

Malheureusement je ne suis pas développeur. J'ai besoin qu'on me change ce qui ne va pas car je ne sais pas.
Laurent

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 janv. 2012, 21:25

C'est assez difficile de corriger un script quand on ne sait pas ce qu'il est sensé faire... à priori, j'aurais tendance à dure que tu peux remplacer le if($daily == 1) par if(!file_exists($d.$db.'.sql.gz'))

Du coup il copierait le fichier s'il n'existe pas déjà dans le répertoire...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 37 Messages

21 janv. 2012, 21:43

Je me bats depuis 2 jours avec ce script et vous m'avez sorti d'affaire ! Merci, mille merci.
Trop fort !
Laurent SARTORIO

Eléphanteau du PHP | 37 Messages

21 janv. 2012, 21:47

Je vais peut être abuser mais pouvez-vous aussi me regarder ce sujet là :
php-debutant/script-php-recherche-carac ... 62219.html
Merci. Laurent