feat: add error handling and lock checking
This commit is contained in:
parent
3f678f78bc
commit
248ef13ee9
1 changed files with 51 additions and 11 deletions
62
backup.sh
62
backup.sh
|
@ -24,8 +24,6 @@ RETENTION_YEARS=1
|
||||||
|
|
||||||
source /etc/restic/env
|
source /etc/restic/env
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Paths to binaries
|
# Paths to binaries
|
||||||
CURL="/usr/bin/curl"
|
CURL="/usr/bin/curl"
|
||||||
TEE="/usr/bin/tee"
|
TEE="/usr/bin/tee"
|
||||||
|
@ -40,13 +38,24 @@ timestamp () {
|
||||||
date "+%Y-%m-%d %H:%M:%S"
|
date "+%Y-%m-%d %H:%M:%S"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_checklock () {
|
||||||
|
OUTPUT=$(${RESTIC} list locks|wc -l)
|
||||||
|
if (( OUTPUT != 0 ));then
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
run_backup () {
|
run_backup () {
|
||||||
#Do the backup
|
#Do the backup
|
||||||
${ECHO} "Starting backup on $HOST at $(timestamp)"
|
${ECHO} "Starting backup on $HOST at $(timestamp)"
|
||||||
${RESTIC} backup \
|
${RESTIC} backup -n \
|
||||||
--tag "$BACKUP_TAG" \
|
--tag "$BACKUP_TAG" \
|
||||||
--exclude-file $BACKUP_EXCLUDES \
|
--exclude-file $BACKUP_EXCLUDES \
|
||||||
$BACKUP_PATHS
|
$BACKUP_PATHS &
|
||||||
|
wait $!
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,14 +68,16 @@ run_forget (){
|
||||||
--keep-daily $RETENTION_DAYS \
|
--keep-daily $RETENTION_DAYS \
|
||||||
--keep-weekly $RETENTION_WEEKS \
|
--keep-weekly $RETENTION_WEEKS \
|
||||||
--keep-monthly $RETENTION_MONTHS \
|
--keep-monthly $RETENTION_MONTHS \
|
||||||
--keep-yearly $RETENTION_YEARS
|
--keep-yearly $RETENTION_YEARS &
|
||||||
|
wait $!
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
run_check () {
|
run_check () {
|
||||||
# Check if everything is fine
|
# Check if everything is fine
|
||||||
${ECHO} "Running check"
|
${ECHO} "Running check"
|
||||||
${RESTIC} check
|
${RESTIC} check &
|
||||||
|
wait $!
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,12 +110,41 @@ notify () {
|
||||||
}
|
}
|
||||||
|
|
||||||
# Do the actual work
|
# Do the actual work
|
||||||
if run_backup && ${RESTIC} unlock && run_forget && cleanup; then
|
ERRORS=""
|
||||||
|
STATUS_TOTAL=0
|
||||||
|
|
||||||
|
if run_checklock; then
|
||||||
|
${ECHO} "Restic backup on $HOST starting at $(timestamp)"| ${TEE} -a "$LOG_FILE" >(notify)
|
||||||
|
locks=0
|
||||||
|
else
|
||||||
|
${ECHO} "Backup on $HOST aborted at $(timestamp) due to locks" | ${TEE} -a "$LOG_FILE" >(notify)
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! run_backup | tee -a $LOG_FILE; then
|
||||||
|
backup_status=1
|
||||||
|
ERRORS="$ERRORS [backup step failed]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if ! run_forget | tee -a $LOG_FILE; then
|
||||||
|
forget_status=1
|
||||||
|
ERRORS="$ERRORS [forget step failed]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! run_check | tee -a $LOG_FILE; then
|
||||||
|
check_status-1
|
||||||
|
ERRORS="$ERRORS [check step failed]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cleanup | tee -a $LOG_FILE
|
||||||
|
|
||||||
|
#
|
||||||
|
#if run_backup && ${RESTIC} unlock && run_forget && cleanup; then
|
||||||
# run_check
|
# run_check
|
||||||
#cleanup
|
#cleanup
|
||||||
#status_total=$(( check_status + backup_status + forget_status ))
|
if (( status_total == 0 ));then
|
||||||
#if (( status_total == 0 ));then
|
|
||||||
${ECHO} "Backup on $HOST completed successfully at $(timestamp)" | ${TEE} -a "$LOG_FILE" >(notify)
|
${ECHO} "Backup on $HOST completed successfully at $(timestamp)" | ${TEE} -a "$LOG_FILE" >(notify)
|
||||||
else
|
else
|
||||||
${ECHO} "Backup on $HOST completed at $(timestamp) with issues (see $LOG_FILE)" | ${TEE} -a "$LOG_FILE" >(notify)
|
${ECHO} "Backup on $HOST completed at $(timestamp) with issues: $ERRORS (see $LOG_FILE)" | ${TEE} -a "$LOG_FILE" >(notify)
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Add table
Reference in a new issue