2024-06-08 16:58:39 +02:00
|
|
|
#!/bin/bash
|
2024-06-08 17:39:44 +02:00
|
|
|
# Changer le chemin si différent
|
2024-06-08 16:58:39 +02:00
|
|
|
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
|
|
|
|
|
2024-06-08 17:47:20 +02:00
|
|
|
# Suppresion de l'ancien fichier de log de sauvegarde
|
2024-06-08 16:58:39 +02:00
|
|
|
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
|
2024-06-08 17:39:44 +02:00
|
|
|
/usr/bin/rsync -avAX --log-file=${dir_logs}/${node}.log --log-file-format="Fichier modifié! %f %i" $SOURCE $TARGET/backup.${node}
|
2024-06-08 16:58:39 +02:00
|
|
|
|
|
|
|
# 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
|
|
|
|
|
2024-06-08 17:39:44 +02:00
|
|
|
MAIL_SUBJECT="📥 Rapport de sauvegarde Docker Swarm"
|
2024-06-08 16:58:39 +02:00
|
|
|
# Envoi de l'email
|
|
|
|
echo "Mail Subject: " $MAIL_SUBJECT
|
2024-06-08 17:39:44 +02:00
|
|
|
(echo -e "$MAIL_SUBJECT\n\nStatut de la sauvegarde:\n"; \
|
2024-06-08 16:58:39 +02:00
|
|
|
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
|