script-backup-docker-swarm/backup-swam.sh
2024-06-08 17:39:44 +02:00

67 lines
2.3 KiB
Bash

#!/bin/bash
# Changer le chemin si différent
source /mnt/backup/swarm/.env
# Tableau permettant d'enregistrer le status des backup pour chaque noeud
declare -A tab_resultat_backup
# Tableau permettant d'enregistrer le status de Docker
declare -A tab_status_docker
echo "Verif fichiers de log"
if compgen -G "${dir_logs}/*.log" > /dev/null; then
/bin/rm ${dir_logs}/*.log
fi
# Arrêt de docker
ssh root@${node} "systemctl stop --quiet docker"
# Traitement du resultat suite à l'arrêt du service Docker
docker_status_stop=$?
sleep 10
docker_status=`ssh root@${node} "systemctl is-active docker"`
if [[ $docker_status_stop -gt 0 && $docker_status == "active" ]]
then
echo "Noeud ${node} : Le service docker n'a pas pu être arrêté. Sauvegarde annulée" > ${dir_logs}/${node}.log
else
# Si Docker arrêté, la sauvegarde est lancée
/usr/bin/rsync -avAX --log-file=${dir_logs}/${node}.log --log-file-format="Fichier modifié! %f %i" $SOURCE $TARGET/backup.${node}
# Traitement du resultat de la sauvegarde
resultat=$?
if [[ ${resultat} -gt 0 ]]; then
tab_resultat_backup[${node}]="${node} : Erreur de sauvegarde du répertoire Swarm"
else
tab_resultat_backup[${node}]="${node} : Sauvegarde reussie du répertoire Swarm"
fi
# Relance du service Docker
ssh root@${node} "systemctl start --quiet docker"
sleep 10
# Traitement du resultat suite à la relance du service Docker
docker_status_start=$?
docker_status=`ssh root@${node} "systemctl is-active docker"`
if [[ docker_status_start -gt 0 && $docker_status != "active" ]]
then
tab_status_docker[${node}]="${node} : Le service Docker n'a pas pu être relancé"
else
tab_status_docker[${node}]="${node} : Le service Docker a pu être relancé"
fi
fi
MAIL_SUBJECT="📥 Rapport de sauvegarde Docker Swarm"
# Envoi de l'email
echo "Mail Subject: " $MAIL_SUBJECT
(echo -e "$MAIL_SUBJECT\n\nStatut de la sauvegarde:\n"; \
for result in "${!tab_resultat_backup[@]}"; do
echo -e "${tab_resultat_backup[${result}]}"
echo -e "${tab_status_docker[${result}]}"
done
echo -e "\nJournal de sauvegarde:\n"; \
cat ${dir_logs}/*.log) | \
mail \
-a "From: ${FROM}" \
-a "Organization: Maison" \
-s "$MAIL_SUBJECT" \
$EMAIL_RECIPIENT