diff --git a/backup-swam.sh b/backup-swam.sh new file mode 100644 index 0000000..ed03b24 --- /dev/null +++ b/backup-swam.sh @@ -0,0 +1,66 @@ +#!/bin/bash +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="File changed! %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 sauvegardes Docker Swarm" +# Envoi de l'email +echo "Mail Subject: " $MAIL_SUBJECT +(echo -e "$MAIL_SUBJECT\n\nStatut des sauvegardes:\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 \ No newline at end of file