Julia41
26/09/2007, 15h11
Bon, ceci est un petit script permettant une sauvegarde automatique de ses Bases de données MySQL. Ainsi que d'envoyer un mail contenant un backup de ses bases de données. Le format Zip a été choisi pour pouvoir être lu facilement sous Windows...
Il n'est pas complet, quelques modifications (cf. TODO) pourrait être sympa.
#!/bin/bash
#************************************************* **********************#
# BACKUP MySQL repris de celui de DanSteph #
# ------------------ #
# Vous pouvez lancer ce script en cron tous les jours, il est #
# prévu pour un backup par jour #
# Attention à la taille de vos bases de données pour l'envois #
# des emails . #
# #
#************************************************* **********************#
#************************************************* **********************#
# TODO #
# Gestion des erreurs si échec #
# Fichier permettant de mettre directement ses BDD #
#************************************************* **********************#
#************************************************* **********************#
# PARAMETRES A EDITER
#************************************************* **********************#
USER="root" #Nom de superutilisateur MySQL
DBPASS="XXXXXXXX" #Votre password superutilisateur
EMAIL="XXXXXXXX@XXX.XXX" #Votre email
#Envois d'un mail (attention ne pas mettre à 1 si JOINDB=1
MAILSEND="0"
DBNAME1="aseco" #Nom de vos bases de données
DBNAME2="cacti" #Une nouvelle ligne par base
DBNAME3="flyspray" #
DATEFORMAT=`date +%d-%m` #Format de la fate pour le backup
#Sujet de mail que vous recevrez si MAILSEND ou JOINDB = 1
SUJETMAIL="Backup $DATEFORMAT MySQL effectué"
COMPRESS="1" #Mettre "1" pour zipper le backup
JOINDB="1" #Joindre par mail le Backup
#Mettez à 0 si vous souhaitez supprimer la copie local (Déconseillé)
KEEPLOCAL="0"
#************************************************* **********************#
# EDITION AVANCEE #
#************************************************* **********************#
#Répertoire de backup (temporaire si KEEPLOCAL = 0
BACKUPDIR="/home/backup/sql/"
#Sauvegarde des bases de données
#Rajoutez une ligne si vous avez plus de bases de données à sauvegarder
echo "Backup SQL commencé le `date`"
mysqldump --opt -u root -p$DBPASS $DBNAME1 > $BACKUPDIR/$DATEFORMAT-$DBNAME1.sql
echo "Base de données $DBNAME1 sauvegardée"
mysqldump --opt -u root -p$DBPASS $DBNAME2 > $BACKUPDIR/$DATEFORMAT-$DBNAME2.sql
echo "Base de données $DBNAME2 sauvegardée"
mysqldump --opt -u root -p$DBPASS $DBNAME3 > $BACKUPDIR/$DATEFORMAT-$DBNAME3.sql
echo "Base de données $DBNAME3 sauvegardée"
#************************************************* **********************#
# FIN DES PARAMETRES A EDITER #
#************************************************* **********************#
#Compression en Zip si COMPRESS est à 1 (Option obligatoire pour l'envois de la copie par mail.
if [ "$COMPRESS" = "1" ]
then
zip -rT9 $DATEFORMAT-MySQL.zip $BACKUPDIR
rm $BACKUPDIR*
mv $DATEFORMAT-MySQL.zip $BACKUPDIR
echo "Backup SQL compressé effectué `date`"
fi
#Envois d'un email récapitulatif (Désactivé la variable MAILSEND si vous avez mis JOINDB à 1.
if [ "$MAILSEND" = "1" ]
then
echo -e "Backup MySQL effectué le `date`.\nLes Bases de données $DBNAME1, $DBNAME2, $DBNAME3 ont bien été sauvegardées.\nFichier $DATEFORMAT-MySQL.zip placé dans $BACKUPDIR" | mail -s "$SUJETMAIL" $EMAIL
fi
#Envois de votre sauvegarde par email (seulement si vous avez activé la compression par ZIP.
if [ "$JOINDB" = "1" ]
then
cd $BACKUPDIR
(echo -e "Backup MySQL effectué le `date`.\nLes Bases de données $DBNAME1, $DBNAME2, $DBNAME3 ont bien été sauvegardées.\nFichier $DATEFORMAT-MySQL.zip placé dans $BACKUPDIR"; uuencode $DATEFORMAT-MySQL.zip $DATEFORMAT-MySQL.zip) | mail -s "$SUJETMAIL" $EMAIL
fi
#Suppression de votre sauvegarde local si la variable KEEPLOCAL est = 0
if [ "$KEEPLOCAL" = "0" ]
then
rm $BACKUPDIR*
fi
echo "Backup terminé"
Il n'est pas complet, quelques modifications (cf. TODO) pourrait être sympa.
#!/bin/bash
#************************************************* **********************#
# BACKUP MySQL repris de celui de DanSteph #
# ------------------ #
# Vous pouvez lancer ce script en cron tous les jours, il est #
# prévu pour un backup par jour #
# Attention à la taille de vos bases de données pour l'envois #
# des emails . #
# #
#************************************************* **********************#
#************************************************* **********************#
# TODO #
# Gestion des erreurs si échec #
# Fichier permettant de mettre directement ses BDD #
#************************************************* **********************#
#************************************************* **********************#
# PARAMETRES A EDITER
#************************************************* **********************#
USER="root" #Nom de superutilisateur MySQL
DBPASS="XXXXXXXX" #Votre password superutilisateur
EMAIL="XXXXXXXX@XXX.XXX" #Votre email
#Envois d'un mail (attention ne pas mettre à 1 si JOINDB=1
MAILSEND="0"
DBNAME1="aseco" #Nom de vos bases de données
DBNAME2="cacti" #Une nouvelle ligne par base
DBNAME3="flyspray" #
DATEFORMAT=`date +%d-%m` #Format de la fate pour le backup
#Sujet de mail que vous recevrez si MAILSEND ou JOINDB = 1
SUJETMAIL="Backup $DATEFORMAT MySQL effectué"
COMPRESS="1" #Mettre "1" pour zipper le backup
JOINDB="1" #Joindre par mail le Backup
#Mettez à 0 si vous souhaitez supprimer la copie local (Déconseillé)
KEEPLOCAL="0"
#************************************************* **********************#
# EDITION AVANCEE #
#************************************************* **********************#
#Répertoire de backup (temporaire si KEEPLOCAL = 0
BACKUPDIR="/home/backup/sql/"
#Sauvegarde des bases de données
#Rajoutez une ligne si vous avez plus de bases de données à sauvegarder
echo "Backup SQL commencé le `date`"
mysqldump --opt -u root -p$DBPASS $DBNAME1 > $BACKUPDIR/$DATEFORMAT-$DBNAME1.sql
echo "Base de données $DBNAME1 sauvegardée"
mysqldump --opt -u root -p$DBPASS $DBNAME2 > $BACKUPDIR/$DATEFORMAT-$DBNAME2.sql
echo "Base de données $DBNAME2 sauvegardée"
mysqldump --opt -u root -p$DBPASS $DBNAME3 > $BACKUPDIR/$DATEFORMAT-$DBNAME3.sql
echo "Base de données $DBNAME3 sauvegardée"
#************************************************* **********************#
# FIN DES PARAMETRES A EDITER #
#************************************************* **********************#
#Compression en Zip si COMPRESS est à 1 (Option obligatoire pour l'envois de la copie par mail.
if [ "$COMPRESS" = "1" ]
then
zip -rT9 $DATEFORMAT-MySQL.zip $BACKUPDIR
rm $BACKUPDIR*
mv $DATEFORMAT-MySQL.zip $BACKUPDIR
echo "Backup SQL compressé effectué `date`"
fi
#Envois d'un email récapitulatif (Désactivé la variable MAILSEND si vous avez mis JOINDB à 1.
if [ "$MAILSEND" = "1" ]
then
echo -e "Backup MySQL effectué le `date`.\nLes Bases de données $DBNAME1, $DBNAME2, $DBNAME3 ont bien été sauvegardées.\nFichier $DATEFORMAT-MySQL.zip placé dans $BACKUPDIR" | mail -s "$SUJETMAIL" $EMAIL
fi
#Envois de votre sauvegarde par email (seulement si vous avez activé la compression par ZIP.
if [ "$JOINDB" = "1" ]
then
cd $BACKUPDIR
(echo -e "Backup MySQL effectué le `date`.\nLes Bases de données $DBNAME1, $DBNAME2, $DBNAME3 ont bien été sauvegardées.\nFichier $DATEFORMAT-MySQL.zip placé dans $BACKUPDIR"; uuencode $DATEFORMAT-MySQL.zip $DATEFORMAT-MySQL.zip) | mail -s "$SUJETMAIL" $EMAIL
fi
#Suppression de votre sauvegarde local si la variable KEEPLOCAL est = 0
if [ "$KEEPLOCAL" = "0" ]
then
rm $BACKUPDIR*
fi
echo "Backup terminé"