# \[résolu\] script de restauration bdd mysql

**URL:** <https://www.debian-fr.org/t/resolu-script-de-restauration-bdd-mysql/10089>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 4:36 UTC](https://www.debian-fr.org/t/resolu-script-de-restauration-bdd-mysql/10089 "2016-02-20T16:36:06Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![dexmon](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/d2c977/32.png) [@dexmon](https://www.debian-fr.org/u/dexmon)\
**Post date:** [Février 20, 2016, 4:36 UTC](https://www.debian-fr.org/t/resolu-script-de-restauration-bdd-mysql/10089/1 "2016-02-20T16:36:06Z")

</div>

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. 🙂

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 4:36 UTC](https://www.debian-fr.org/t/resolu-script-de-restauration-bdd-mysql/10089/2 "2016-02-20T16:36:07Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![dexmon](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/d2c977/32.png) [@dexmon](https://www.debian-fr.org/u/dexmon)\
**Post date:** [Février 20, 2016, 4:36 UTC](https://www.debian-fr.org/t/resolu-script-de-restauration-bdd-mysql/10089/3 "2016-02-20T16:36:07Z")

</div>

merci fran

voici le script [restor.sh](http://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 ?

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 4:36 UTC](https://www.debian-fr.org/t/resolu-script-de-restauration-bdd-mysql/10089/4 "2016-02-20T16:36:08Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![dexmon](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/d2c977/32.png) [@dexmon](https://www.debian-fr.org/u/dexmon)\
**Post date:** [Février 20, 2016, 4:36 UTC](https://www.debian-fr.org/t/resolu-script-de-restauration-bdd-mysql/10089/5 "2016-02-20T16:36:08Z")

</div>

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