Voici un petit script utilisant curl et mailutils pour sauvegarder ses bases MySQL sur un serveur FTP et envoyer un mail pour le succès ou l'échec de l'opération.

Mysql

#!/bin/bash 
#################################################
#
# Script de sauvegarde d'une base MySQL
# auteur : Benoît
# 15/04/2008
#

#################################################
# ---- Mise en place des variables

# Nom de la 1er base
liste_bases="--all-databases"

# login passwd pour mysql ayant acces a toutes les bases
user=utilisateursql
passbase=motdepassesql

# adresse email a prenir
mailrt=toto@sdrgzs.df

# nom du serveur de Backup
srvbk=nom_du_serveur_ftp sans ftp://
Userftp=user_ftp
Passftp=mdtp_ftp

# Repertoire ou backuper les bases
repbk=backup_sql

# ---- Fin des variables

#################################################
# ---- Main

statsdatem=$(date '+%Y/%m/%d - %T')
statsdatef=$(date '+%Y%m%d')

for base in ${liste_bases}
do
NomFichierSauvegarde="backup-"${statsdatef}"-"${base}".sql"
mysqldump --all --user=${user} --password=${passbase} ${base} > ${NomFichierSauvegarde};
[ $? -ne 0 ] && echo "Il y a eu une erreur lors du Backup (dump) de vos bases" | mail -s "ERREUR - Backup MySQL du ${statsdatem}" ${mailrt};
gzip ${NomFichierSauvegarde};
[ $? -ne 0 ] && echo "Il y a eu une erreur lors de la compression de vos bases"| mail -s "ERREUR - Backup MySQL du ${statsdatem}" ${mailrt};
done
echo "avant"

curl -u ${Userftp}:${Passftp} -T *${statsdatef}*.gz ftp://${srvbk}/${repbk}/

[ $? -ne 0 ] && echo "Il y a eu une erreur de transfert lors du Backup de vos bases" | mail -s "ERREUR - Backup MySQL du ${statsdatem}" ${mailrt};

for fic in `ls -1 *${statsdatef}*.gz`
do
rm -f ${fic}
done

echo "Backup des bases SQL ${liste_bases} : OK" | mail -s "Backup MySQL du ${statsdatem}" ${mailrt};

exit 0