[résolu] script de restauration bdd mysql

Salut,
pour tester j’ai créer un petit script de backup et de restor de bdd mysql en bash mais je bloque pour la restauration car le fichier est sauvegardé avec un format de date.
Je voudrais restaurée la dernière bdd mais je sais pas quoi indiquer dans le ligne de script.

Voici le script de backup:

[code]#!/bin/sh
PATH=/usr/bin:/bin

date=$(date +%d-%m-%Y-%H-%M)
user=“operator"
pw=“PASSWORD"
dump=”/usr/bin/mysqldump"
log=”/var/log/backupdb.log"
dest="/var/db"

${dump} -A -u${user} -p${pw} > /var/tmp/databases.sql
cd /var/tmp
tar -cf databases-${date}.tar databases.sql
bzip2 databases-${date}.tar
chmod 600 databases-${date}.tar.bz2
mv databases-${date}.tar.bz2 ${dest}
rm -f databases.sql
echo “BACKUP_DB_${date} : Base de donnée sauvegardée” >> ${log}
exit 1[/code]

il marche bien et met crée donc un fichier avec une date et l’heure de la sauvegarde:
/var/db/databases-18-10-2007-15-00.tar.bz2

Mais voilà, lors de la restauration il y a un problème car il ne trouve plus le fichier puisque la date du système à changée.

Voici le script de restauration:

[code]#!/bin/sh
PATH=/usr/bin:/bin
date=$(date +%d-%m-%Y-%H-%M)
user=“operator"
pw=“PASSWORD"
restor=”/usr/bin/mysql"
dest=”/var/db"

echo
echo "Restauration de la dernière sauvegarde…en cours…"
sleep 2

cd ${dest}
tar -jxf databases-${date}.tar.bz2
${restor} -u${user} -p${pw} < databases.sql
rm -f databases.sql

echo
echo "Dernière base de donnée restaurée avec succès"
sleep 2
exit 1[/code]

Comment faire pour qu’il restaure le dernier backup ?

Note: je ne veux pas réinventer la roue, c’est juste un test. :slightly_smiling:

Ou tu crée un fichier timz stamp:

[code]#!/bin/sh
PATH=/usr/bin:/bin

date=$(date +%d-%m-%Y-%H-%M)
user=“operator"
pw=“PASSWORD"
dump=”/usr/bin/mysqldump"
log=”/var/log/backupdb.log"
dest="/var/db"

${dump} -A -u${user} -p${pw} > /var/tmp/databases.sql
cd /var/tmp
tar -cf databases-${date}.tar databases.sql
bzip2 databases-${date}.tar
chmod 600 databases-${date}.tar.bz2
mv databases-${date}.tar.bz2 ${dest}
echo databases-${date}.tar.bz2 > ${dest}/database.stamp
rm -f databases.sql
echo “BACKUP_DB_${date} : Base de donnée sauvegardée” >> ${log}
exit 1[/code]

Le fichier /var/db/database.stamp contient le nom du fichier.

Ou tu fais un
NOM=ls -tr /var/db/database*bz2 | tail -n 1

et NOM contient le nom de la dernière archive crée.

merci fran

voici le script restor.sh:

[code]#!/bin/sh
PATH=/usr/bin:/bin
user=“operator"
pw=“PASSWORD"
restor=”/usr/bin/mysql"
dest=”/var/db"
dback="ls -tr /var/db/databases-*.bz2 | tail -n 1"

echo
echo "Restauration de la dernière sauvegarde…"
sleep 2

cd ${dest}
tar -jxf ${dback}
${restor} -u${user} -p${pw} < databases.sql
rm -f databases.sql

echo
echo "Fait! Base de donnée restaurée"
sleep 1
exit 1[/code]

est-ce que c’est bon ?

Fais

dback=`ls -tr /var/db/databases-*.bz2 | tail -n 1`

pas de " … encore que après essai ça marche quand même.
À priori donc pas d’erreurs, juste une remarque, pourquoi un exit 1? Quand tout se passe bien, l’usage est de sortir avec un code de retour 0 et non 1.

effectivement ça marche quand même avec les "
je modifie le “exit 1” en “exit 0”