- Accueil
- » Forum
- » Serveurs
- » script backup
Pages : 1
#1 Le 24/06/2019, à 10:13
- ethan7888
script backup
Bonjour à tous,
J'ai mis en place un script shell (que j'ai trouvé sur internet, mon niveau de Noobs en Bash m'oblige à faire ça) Pour backuper une database d'un serveur A (serveur DB) à un serveur B (serveur backup)
Une fois que les backup sont fait, le script envoi un email de success, jusqu'ici tout fonctionne comme prévu. Sauf que si le script échoue, il doit envoyer un mail "failed" et même quand je simule un problème de backup dans le script, il envoie toujours un email de "success"
Je ne dois donc pas remplir les bonnes conditions, voici le script en question:
#!/bin/bash
# A Simple Shell Script to Backup Red Hat / CentOS / Fedora / Debian / Ubuntu Apache Webserver and SQL Database
# Path to backup directories
DIRS="/home/ubuntu/backup/bin"
# Store todays date
NOW=$(date +"%F")
# Store backup path
BACKUP="/home/ubuntu/backup/var/$NOW"
# Backup file name hostname.time.sql.gz
MFILE="$(hostname).$(date +'%T').sql.gz"
# Set MySQL username and password
MYSQLUSER="userdb"
MYSQLPASSWORD="password"
# Remote SSH server cald-backup setup
#SSHSERVER="192.168.0.12" # your remote ssh server
SSHUSER="ubuntu" # username
SSHDUMPDIR="/home/ubuntu/backup/var" # remote ssh server directory to store dumps
# Paths for binary files
TAR="/bin/tar"
MYSQLDUMP="/usr/bin/mysqldump"
GZIP="/bin/gzip"
SCP="/usr/bin/scp"
SSH="/usr/bin/ssh"
LOGGER="/usr/bin/logger"
# make sure backup directory exists
[ ! -d $BACKUP ] && mkdir -p ${BACKUP}
# Log backup start time in /var/log/messages
$LOGGER "$0: *** Backup started @ $(date) ***"
# Backup MySQL
$MYSQLDUMP -u ${MYSQLUSER} --single-transaction -h localhost -p${MYSQLPASSWORD} sooner | $GZIP -9 > ${BACKUP}/${MFILE}
# Dump all local files to failsafe remote UNIX ssh server / home server
$SSH ${SSHUSER}@${SSHSERVER} mkdir -p ${SSHDUMPDIR}/${NOW}
$SCP -r ${BACKUP}/* ${SSHUSER}@${SSHSERVER}:${SSHDUMPDIR}/${NOW}
# Log backup end time in /var/log/messages
$LOGGER "$0: *** Backup Ended @ $(date) ***"
# Check for backup file and log messages
if [ -f $BACKUP/$MFILE ]
then
/usr/bin/mail -s "DB cald-backup completed successfully." ethan7888@caldbackup.local
else
/usr/bin/mail -s "DB cald-backup failed." backup@caldbackup.local
fi
echo find /home/ubuntu/backup/var/ -type f -mtime +30 -exec rm -f {} ;
exit
Auriez-vous une idée s'il vous plaît ?
Cordialement
Ethan7888
Modération: à l'avenir, merci de penser aux balises code
Dernière modification par ethan7888 (Le 24/06/2019, à 11:07)
Hors ligne
#2 Le 24/06/2019, à 10:51
- pingouinux
Re : script backup
Bonjour,
Tu testes l'existence de ce fichier ${BACKUP}/${MFILE}. Peut-être qu'en cas d'erreur il existe quand même, mais avec une taille nulle.
Tu peux essayer ceci :
# Check for backup file and log messages
ls -l "$BACKUP/$MFILE"
if [ -s "$BACKUP/$MFILE" ]
then
/usr/bin/mail -s "DB cald-backup completed successfully." eoguenin@universcine.com
else
/usr/bin/mail -s "DB cald-backup failed." backup@universcine.com
fi
Hors ligne
#3 Le 24/06/2019, à 11:11
- ethan7888
Re : script backup
Bonjour,
Tu testes l'existence de ce fichier ${BACKUP}/${MFILE}. Peut-être qu'en cas d'erreur il existe quand même, mais avec une taille nulle.
Tu peux essayer ceci :# Check for backup file and log messages ls -l "$BACKUP/$MFILE" if [ -s "$BACKUP/$MFILE" ] then /usr/bin/mail -s "DB cald-backup completed successfully." eoguenin@universcine.com else /usr/bin/mail -s "DB cald-backup failed." backup@universcine.com fi
Super merci beaucoup pour votre retour, je teste ça de suite et je reviens vers vous
Cordialement
Ethan7888
Hors ligne
#4 Le 24/06/2019, à 13:48
- ethan7888
Re : script backup
pingouinux a écrit :Bonjour,
Tu testes l'existence de ce fichier ${BACKUP}/${MFILE}. Peut-être qu'en cas d'erreur il existe quand même, mais avec une taille nulle.
Tu peux essayer ceci :# Check for backup file and log messages ls -l "$BACKUP/$MFILE" if [ -s "$BACKUP/$MFILE" ] then /usr/bin/mail -s "DB cald-backup completed successfully." eoguenin@universcine.com else /usr/bin/mail -s "DB cald-backup failed." backup@universcine.com fi
Super merci beaucoup pour votre retour, je teste ça de suite et je reviens vers vous
Cordialement
Ethan7888
Rebonjour,
J'ai modifié le script comme vous me l'avez indiqué, j'ai toujours un succesfully ( qu'il réussisse à backuper ou non).
Ceci étant, peut être que mon teste n'est pas pertinent, je modifie la ligne suivante
#SSHSERVER="192.168.0.12"
en
#SSHSERVER="192.168.0.20"
( le .20 est une IP qui n'existe pas afin justement qu'il ne puissent pas backuper et qu'il m'envoie une notif email en failed)
Cordialement
Ethan7888
Dernière modification par ethan7888 (Le 24/06/2019, à 13:50)
Hors ligne
#5 Le 24/06/2019, à 15:17
- bruno
Re : script backup
Modifier une ligne commentée n'a aucune incidence sur l'exécution du script… (je me demande d'ailleurs comment il peut fonctionner).
#6 Le 24/06/2019, à 15:22
- ethan7888
Re : script backup
Modifier une ligne commentée n'a aucune incidence sur l'exécution du script… (je me demande d'ailleurs comment il peut fonctionner).
Bonjour,
Effectivement dans mon copier coller initial il est commenté, mais dans mes testes il n'était plus commenté, mais vous avez raison, dans l'absolu, ça ne peut pas fonctionner
Voici la dernière version du script que j'ai testé:
#!/bin/bash
# A Simple Shell Script to Backup Red Hat / CentOS / Fedora / Debian / Ubuntu Apache Webserver and SQL Database
# Path to backup directories
DIRS="/home/ubuntu/backup/bin"
# Store todays date
NOW=$(date +"%F")
# Store backup path
BACKUP="/home/ubuntu/backup/var/$NOW"
#BACKUP="/mnt/cald-backup/database/$NOW"
# Backup file name hostname.time.sql.gz
MFILE="$(hostname).$(date +'%T').sql.gz"
# Set MySQL username and password
MYSQLUSER="userdb"
MYSQLPASSWORD="************************"
# Remote SSH server cald-backup setup
SSHSERVER="192.168.0.20" # your remote ssh server
SSHUSER="ubuntu" # username
SSHDUMPDIR="/home/ubuntu/backup/var" # remote ssh server directory to store dumps
# Paths for binary files
TAR="/bin/tar"
MYSQLDUMP="/usr/bin/mysqldump"
GZIP="/bin/gzip"
SCP="/usr/bin/scp"
SSH="/usr/bin/ssh"
LOGGER="/usr/bin/logger"
# make sure backup directory exists
[ ! -d $BACKUP ] && mkdir -p ${BACKUP}
# Log backup start time in /var/log/messages
$LOGGER "$0: *** Backup started @ $(date) ***"
# Backup MySQL
$MYSQLDUMP -u ${MYSQLUSER} --single-transaction -h localhost -p${MYSQLPASSWORD} sooner | $GZIP -9 > ${BACKUP}/${MFILE}
# Dump all local files to failsafe remote UNIX ssh server / home server
$SSH ${SSHUSER}@${SSHSERVER} mkdir -p ${SSHDUMPDIR}/${NOW}
$SCP -r ${BACKUP}/* ${SSHUSER}@${SSHSERVER}:${SSHDUMPDIR}/${NOW}
# Log backup end time in /var/log/messages
$LOGGER "$0: *** Backup Ended @ $(date) ***"
# Check for backup file and log messages
ls -l "$BACKUP/$MFILE"
if [ -f "$BACKUP/$MFILE" ]
then
/usr/bin/mail -s "DB cald-backup completed successfully." ethan7888@caldbackup.local
else
/usr/bin/mail -s "DB cald-backup failed." ethan7888@caldbackup.local
fi
exit
Dernière modification par ethan7888 (Le 24/06/2019, à 15:38)
Hors ligne
#7 Le 24/06/2019, à 16:14
- pingouinux
Re : script backup
Que retourne cette ligne que je t'ai fait ajouter ?
ls -l "$BACKUP/$MFILE"
Hors ligne
#8 Le 24/06/2019, à 17:19
- bruno
Re : script backup
Comme indiqué en #2 ton test ne sert pas à grand chose. Avec cette ligne :
$MYSQLDUMP -u ${MYSQLUSER} --single-transaction -h localhost -p${MYSQLPASSWORD} sooner | $GZIP -9 > ${BACKUP}/${MFILE}
si la commande mysqldump échoue, le fichier gzip est tout de même créé.
Pages : 1