diff --git a/check-incs.sh b/check-incs.sh new file mode 100644 index 0000000..3cd6c36 --- /dev/null +++ b/check-incs.sh @@ -0,0 +1,52 @@ +#!/bin/sh + +EVOBACKUP_CONFIGS="/etc/evobackup/*" + +relative_date() { + format=$(echo $1 | cut -d'.' -f1) + time_jump=$(echo $1 | cut -d'.' -f2) + + reference_date=$(date "${format}") + past_date=$(date --date "${reference_date} ${time_jump}" +"%Y-%m-%d") + + echo ${past_date} +} +inc_exists() { + ls -d /backup/incs/$1 > /dev/null 2>&1 +} +jail_exists() { + ls -d /backup/jails/$1 > /dev/null 2>&1 +} +# default return value is 0 (succes) +rc=0 +# loop for each configured jail +for file in ${EVOBACKUP_CONFIGS}; do + jail_name=$(basename $file) + # check if jail is present + if jail_exists ${jail_name}; then + # get jail last configuration date + jail_config_age=$(date --date "$(stat -c %y ${file})" +%s) + # loop for each line in jail configuration + for line in $(cat $file); do + # inc date in ISO format + inc_date=$(relative_date $line) + # inc date in seconds from epoch + inc_age=$(date --date "${inc_date}" +%s) + # check if the configuration changed after the inc date + if [ $jail_config_age -lt $inc_age ]; then + # Error if inc is not found + if ! inc_exists ${jail_name}/${inc_date}*; then + echo "ERROR: inc is missing \`${jail_name}/${inc_date}'" >&2 + rc=1 + fi + else + echo "INFO: no inc expected for ${inc_date} \`${jail_name}'" + fi + done + else + echo "ERROR: jail is missing \`${jail_name}'" >&2 + rc=1 + fi +done + +exit $rc