Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/06/2019, à 11: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, à 12:07)

Hors ligne

#2 Le 24/06/2019, à 11: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, à 12:11

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 smile

Cordialement

Ethan7888

Hors ligne

#4 Le 24/06/2019, à 14:48

ethan7888

Re : script backup

ethan7888 a écrit :
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 smile

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, à 14:50)

Hors ligne

#5 Le 24/06/2019, à 16: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).

Hors ligne

#6 Le 24/06/2019, à 16:22

ethan7888

Re : script backup

bruno a écrit :

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, à 16:38)

Hors ligne

#7 Le 24/06/2019, à 17: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, à 18: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éé.

Hors ligne