Bonjour à tous,
Je remonte ce sujet un peu vieux mais c'est exactement ce dont j'ai besoin.
Je suis totalement newbie sous linux mais pas mal débrouillard, j'ai donc modifié mon crontab, rendu le script exécutable, tout ça...
Sauf que lorsque je veux tester l’exécution du script à la main et que je l’exécute, j'ai droit à un message d'erreur:
Ds107> sh backupbdd.sh
backupbdd.sh: line 38: syntax error: unexpected word (expecting "do")
J'ai bien vérifié ligne 38, c'est bien écrit "do". Le monsieur dans le synology me dit qu'il attend la valeur "do", après vérification du script elle y est, je cale...
voici mon code :
#!/bin/sh
# *******************************************
# Script de sauvegarde automatique des bases
# de données d'un serveur MySQL
# *******************************************
# Par F. Maurel
# Suivi des mises à jours sur nas-forum :
#
# *******************************************
# v1.0 - 10/02/12 - Version initiale
# v1.1 - 11/02/12 - Ajout path binaire mysql
# *******************************************
# *******************************************
# Renseigner les variables de connexion au serveur
# *******************************************
# Adresse IP / nom du serveur de bases de données
mysql_server=localhost
# Nom d'utilisateur ayant les droits adéquats, cf forum
mysql_user=sauvegarde
# Mot de passe de l'utilisateur
mysql_pass=sauvegardebdd
# Chemin du dossier où vont être sauvegardées les bases de données, chemin sans le / en fin
dossier_sauvegarde=/volume1/sauvegarde/mysql
# Chemin des binaires mysql
dossier_bin=/usr/syno/mysql/bin
# *******************************************
# Ne pas modifier la suite du fichier
# *******************************************
bases=`$dossier_bin/mysql --host=$mysql_server --user=$mysql_user --password=$mysql_pass -e "show databases;" -B -s 2> /dev/null`
if [ -z "$bases" ];then
echo "Erreur d'accès ou pas de bases."
exit 1
fi
echo "***************************************************"
echo "* Début d'optimisation et de sauvegarde des bases *"
echo "***************************************************"
for base in $bases
do
echo "------- Traitement de la base $base -------"
echo "-- Début d'optimisation --"
$dossier_bin/mysqlcheck --optimize --host=$mysql_server --user=$mysql_user --password=$mysql_pass --databases "$base"
wait
echo ">> Optimisation terminée"
echo "-- Début de sauvegarde --"
$dossier_bin/mysqldump --opt --verbose --host=$mysql_server --user=$mysql_user --password=$mysql_pass --databases "$base" | gzip -9 > ${dossier_sauvegarde}/backup-${base}-$(date -I).gz
echo "------- Sauvegarde de la base $base terminée -------"
done
echo "*********************************"
echo "* Sauvegarde des bases terminée *"
echo "*********************************"
Merci pour le coup de main.