diff --git a/roles/daily-backup/templates/fullBackup.sh b/roles/daily-backup/templates/fullBackup.sh index da228ae..73815e7 100755 --- a/roles/daily-backup/templates/fullBackup.sh +++ b/roles/daily-backup/templates/fullBackup.sh @@ -1,6 +1,8 @@ #!/bin/sh set -e +touch /backups/backup-ongoing + REPOSITORY=ssh://backup@phf.ddns.net:2222/./backup export BORG_PASSPHRASE='{{backup_borg_passphrase}}' @@ -53,6 +55,7 @@ borg prune -v --list ${REPOSITORY} --prefix '{hostname}-' \ # Unset the password export BORG_PASSPHRASE="" +rm -f /backups/backup-ongoing touch /backups/backup-ok exit 0 diff --git a/roles/monit/files/checkBackupStatus.sh b/roles/monit/files/checkBackupStatus.sh new file mode 100755 index 0000000..9c6f4bb --- /dev/null +++ b/roles/monit/files/checkBackupStatus.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -e + +ONGOING_FILE="/backups/backup-ongoing" + +if [ -f "$ONGOING_FILE" ] +then + if test `find "$ONGOING_FILE" -mmin +1` + then + LAST_MODIFICATION_HOURS=`expr "$(($(date +%s) - $(date +%s -r $ONGOING_FILE)))" / 3600` + echo "Backup not finished after more than $LAST_MODIFICATION_HOURS hours" + exit 1 + fi +fi + +exit 0 diff --git a/roles/monit/tasks/main.yml b/roles/monit/tasks/main.yml index 765333a..57ceac4 100644 --- a/roles/monit/tasks/main.yml +++ b/roles/monit/tasks/main.yml @@ -6,6 +6,11 @@ name: monit.service state: started enabled: True +- name: Create fullBackup.sh + copy: + src: checkBackupStatus.sh + dest: /usr/local/bin/checkBackupStatus.sh + mode: 0700 - name: Copy monit config template: src: monitrc diff --git a/roles/monit/templates/monitrc b/roles/monit/templates/monitrc index 730df50..8de27d8 100755 --- a/roles/monit/templates/monitrc +++ b/roles/monit/templates/monitrc @@ -310,10 +310,12 @@ check system $HOST # # -check file daily-backup with path /backups/backup-ok - if timestamp > 25 hours then alert +check file daily-backup-done with path /backups/backup-ok if changed timestamp then alert +check program checkBackupStatus with path /usr/local/bin/checkBackupStatus.sh + if status != 0 then alert + check host home-ssh with address phf.ddns.net if failed port 2222 protocol ssh with timeout 20 seconds then alert