Pour sauvegarder la base de données MySQL, on créer un fichier backupsql.sh dans le dossier /root
#!/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= »pass » #Votre password superutilisateur
EMAIL= »votre_email@fai.com » #Votre email
#Envois d’un mail (attention ne pas mettre à 1 si JOINDB=1
MAILSEND= »0″
DBNAME1= »bdd1″ #Nom de vos bases de données
DBNAME2= »bdd2″ #Une nouvelle ligne par base
DBNAME3= »bdd3″ #
DBNAME4= »bdd5″ #
DBNAME5= »bdd5″ #
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= »1″
#***********************************************************************#
# EDITION AVANCEE #
#***********************************************************************#
#Répertoire de backup (temporaire si KEEPLOCAL = 0
BACKUPDIR= »/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 »
mysqldump –opt -u root -p$DBPASS $DBNAME4 > $BACKUPDIR/$DATEFORMAT-$DBNAME4.sql
echo « Base de données $DBNAME4 sauvegardée »
mysqldump –opt -u root -p$DBPASS $DBNAME5 > $BACKUPDIR/$DATEFORMAT-$DBNAME5.sql
#***********************************************************************#
# 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
tar -vcf $DATEFORMAT-MySQL.tar $BACKUPDIR
rm $BACKUPDIR*
mv $DATEFORMAT-MySQL.tar $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, $DBNAME4, $DBNAME5 ont bien été sauvegardées.\nFichier $DATEFORMAT-MySQL.tar 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, $DBNAME4, $DBNAME5 ont bien été sauvegardées.\nFichier $DATEFORMAT-MySQL.tar placé dans $BACKUPDIR »; uuencode $DATEFORMAT-MySQL.tar $DATEFORMAT-MySQL.tar) | 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é »
Ensuite on l’appelle avec une tache cron
Pour la sauvegarde de fichiers, on créer un fichier backup_file.sh dans le dossier /root :
#!/bin/bash
rsync -ave –delete /dossier_a_sauvegarder /backup/repertoire_de_sauvegarde/ && echo ’sauvegarde rsync finie’ | mail votre_email@fai.com
Et de même : execution avec une tache cron.