#!/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 # Suppresion de l'ancien fichier de log de sauvegarde 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