BASH - Sauvegarder Zabbix
Table des matières
Dans le millieu professionnel, j'utilise le logiciel Zabbix pour superviser mes serveurs.
Bien évidemment, les données d'un outil doivent impérativement se sauvegarder !!!
Le but, c'est sauvegarder la base zabbix.
Les plus du script :
Introduction
Dans le millieu professionnel, j'utilise le logiciel Zabbix pour superviser mes serveurs.
Bien évidemment, les données d'un outil doivent impérativement se sauvegarder !!!
But du script
Le but, c'est sauvegarder la base zabbix.
Les plus du script :
- Extraire à chaud la base de donnée
- Compresser celle-ci car elle est volumineuse
- Supprimer les sauvegardes anciennes
- Transférer les sauvegardes sur l'espace de sauvegarde se synchronisant chaque nuit à distance
Le script
Script de base
Code BASH :
#! /bin/bash path=`dirname $0` cd "$path" #Def de variables user="zabbix" # Utilisateur de la base de données passwd="zabbix" # Mot de passe de l'utilisateur de la base db="zabbix" # Nom de la base dest="/adrien/sauvegarde/zabbix" #Chemin de destination de la sauvegarde (Attention, pas de slash à la fin) nbsav=30 #Nombre de sauvegardes à conserver #On fabrique les variables systeme dte=$(date +"%Y-%m-%d--%H-%M-%S") fic="$db/$db-$dte.sql" #### SCRIPT #### if [ -d $db ] then echo "On sauvegarde dans $db" else echo "On créé le dossier de sauvegarde $db" mkdir $db fi echo "On sauvegarde de la base $db dans $fic" ionice -c3 nice -n19 mysqldump -u $user -p$passwd $db > "$fic" echo "On compresse $fic avec gzip : $fic.gz" ionice -c3 nice -n19 gzip "$fic" nbfic=$(ls -C1X "$db" | wc -l) diff=$(echo $(($nbfic-$nbsav))) echo "On calcule le nombre de fichiers à supprimer pour ne garder que les $nbsav derniers : $diff" i=1 #Compteur du for for f in $(ls -C1X "$db") do if [ $i -le $diff ] then oldsav="$db/$f" echo "On supprime $db/$f" rm -f "$db/$f" let i++ else echo "Aucune ancienne sauvegarde supprimée" break; fi done echo "On envoie les sauvegarde vers : $dest" rsync -avzh --delete-after "$db/" "$dest/"
Avec un envoi de courriel
Code BASH :
#! /bin/bash path=`dirname $0` cd "$path" #Def de variables user="zabbix" # Utilisateur de la base de données passwd="zabbix" # Mot de passe de l'utilisateur de la base db="zabbix" # Nom de la base dest="/adrien/sauvegarde/zabbix" #Chemin de destination de la sauvegarde (Attention, pas de slash à la fin) nbsav=30 #Nombre de sauvegardes à conserver mail="[email protected]" # Courriel du destinataire des rapports #On fabrique les variables systeme dte=$(date +"%Y-%m-%d--%H-%M-%S") fic="$db/$db-$dte.sql" rap="rapport" echo "Sauvegarde Zabix $(date)" > "$rap" #### SCRIPT #### if [ -d $db ] then echo "On sauvegarde dans $db" else echo "On créé le dossier de sauvegarde $db" mkdir $db fi echo "On sauvegarde de la base $db dans $fic" ionice -c3 nice -n19 mysqldump -u $user -p$passwd $db > "$fic" if [ $? -eq 0 ] then echo "Sauvegarde Zabbix effectuée avec succès" >> "$rap" else echo "Echec lors de la sauvegarde Zabbix" >> "$rap" fi echo "On compresse $fic avec gzip : $fic.gz" ionice -c3 nice -n19 gzip "$fic" if [ $? -eq 0 ] then echo "Compression de la sauvegarde Zabbix effectuée avec succès" >> "$rap" else echo "Echec lors de la compression de la sauvegarde Zabbix" >> "$rap" fi nbfic=$(ls -C1X "$db" | wc -l) diff=$(echo $(($nbfic-$nbsav))) echo "On calcule le nombre de fichiers à supprimer pour ne garder que les $nbsav derniers : $diff" i=1 #Compteur du for for f in $(ls -C1X "$db") do if [ $i -le $diff ] then oldsav="$db/$f" echo "On supprime l ancienne sauvegarde $db/$f" >> "$rap" rm -f "$db/$f" let i++ else echo "Aucune ancienne sauvegarde supprimée" >> "$rap" break; fi done echo "On envoie les sauvegarde vers : $dest" >> "$rap" rsync -avzh --delete-after "$db/" "$dest/" >> "$rap" mail -s "Sauvegarde Zabbix du $(date)" "$mail" < "$rap"