Skip to content
Snippets Groups Projects

show last backup, prune and verify

Merged Hahn Axel (hahn) requested to merge check-clientbackup-with-prune-verify into master
1 file
+ 74
36
Compare changes
  • Side-by-side
  • Inline
+ 74
36
@@ -15,6 +15,7 @@
# 2022-01-19 ah v1.1 fixes with shellcheck
# 2022-02-09 ah v1.2 update after changes in logging
# 2022-10-07 ah v1.3 unescape regex with space to prevent "grep: warning: stray \ before white space"
# 2022-10-20 ah v1.4 show last backup, prune and verify
# ==============================================================================
. $(dirname $0)/jobhelper.sh
@@ -24,16 +25,56 @@
# ------------------------------------------------------------------------------
typeset -i iOK=0
typeset -i iError
# limit when to warn if no backup was started
typeset -i iMaxAgeInHours=96
typeset -i iMaxAgeInHours=24
typeset -i iAge
typeset -i iAge2
typeset -i iError
typeset -i iAgeH
typeset -i iAgeD
logdir=$(dirname "$0")/logs
flagShowChangedFiles=0
# ------------------------------------------------------------------------------
# FUNCTIONS
# ------------------------------------------------------------------------------
# get age of a given file and fill global vars
# iAge
# iAgeH
# iAgeD
# param string filename
function getAge(){
typeset -i local tsfile=0
test -r "$1" && tsfile=$( date +%s -r "$1" )
iAge=$( date +%s )-$tsfile
iAgeH=$iAge/60/60
iAgeD=$iAge/60/60/24
}
# show age of a file hr like
function showAge(){
getAge "$1"
if [ $iAgeD -gt 10000 ]; then
echo "NEVER"
else
test $iAgeD -gt 0 && echo -n "$iAgeD days"
test $iAgeD -eq 0 && test $iAgeH -gt 0 && echo -n "$iAgeH h"
test $iAgeD -eq 0 && test $iAgeH -eq 0 && echo -n "$iAge s"
echo " ago"
fi
}
# filter color in given output
# To use it set a pipe in front:
# <command> | filterColor
function filterColor(){
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
}
# ------------------------------------------------------------------------------
# MAIN
@@ -47,23 +88,16 @@ if [ $? -ne 0 ]; then
iError=1
else
# iMaxAgeInHours=`j_getLastBackupAge`
# echo verify last backup: $iMaxAgeInHours h ago
# for logfile in $(ls -1t "$logdir"/inc*.log "$logdir"/full*.log "$logdir"/auto*.log 2>/dev/null | head -1)
# do
backuplogfile=$(ls -1t "$logdir"/inc*.log "$logdir"/full*.log "$logdir"/auto*.log 2>/dev/null | head -1)
transferlogfile=$(ls -1t "$logdir"/transfer*.log | head -1)
logfile="${backuplogfile} ${transferlogfile}"
lastlogfile="$(ls -1t $logfile | head -1)"
echo LAST BACKUP: "$logfile"
echo LAST LOGS: "$logfile"
echo
echo ">>> RETURNCODES"
grep "final.*rc=" $logfile
# echo ">>> RETURNCODES"
# grep "final.*rc=" $logfile
# --- Monitoring Statusline
if [ -f "$(dirname $0)"/transfer.sh ]; then
@@ -77,21 +111,23 @@ else
iOK=$(grep "final.*rc=0$" $logfile | wc -l )
iError=$(grep "final.*rc=" $logfile | grep -v "rc=0$" | wc -l )
echo "OK: $iOK ... Errors: $iError"
# show errors:
grep "final.*rc=" $logfile | grep -v "rc=0"
# --- rc=0 must be here
if [ $iOK -eq 0 ]; then
echo "ERROR: no OK message was found. Something is messed up :-/"
iError+=1
fi
echo
# --- check age
echo
echo ">>> AGE"
iAge=$( date +%s )-$( date +%s -r "$lastlogfile" )
iAge2=$iAge/60/60
echo "age: $iAge sec ... $iAge2 h"
sShort="$sShort last backup log: $(basename "$lastlogfile") ($iAge2 h ago) "
if [ $iAge2 -gt $iMaxAgeInHours ]; then
getAge "$lastlogfile"
echo "age: $iAge sec ... $iAgeH h"
sShort="$sShort last backup log: $(basename "$lastlogfile") ($iAgeH h ago) "
if [ $iAgeH -gt $iMaxAgeInHours ]; then
echo "Error: the last backup is older than $iMaxAgeInHours hours"
sShort="$sShort ERROR: backup is older than $iMaxAgeInHours hours "
iError+=1
@@ -100,33 +136,35 @@ else
sShort="$sShort OK: backup is younger than $iMaxAgeInHours hours "
iOK+=1
fi
echo
# --- changes (incremental backups only) and backup status infos
# echo
# sSearch="Args:|ElapsedTime|SourceFiles|SourceFileSize|RawDeltaSize"
# echo "$logfile" | grep -F "inc" >/dev/null
# if [ $? -eq 0 ]; then
# sSearch="[ADM] |${sSearch}"
# fi
# echo --- changes:
# grep -E "^(${sSearch})" "$logfile"
if [ $flagShowChangedFiles -ne 0 ]; then
sSearch="Args:|ElapsedTime|SourceFiles|SourceFileSize|RawDeltaSize"
if echo "$logfile" | grep -E "(inc|auto)" >/dev/null; then
sSearch="[ADM] |${sSearch}"
fi
echo ">>> Changes:"
grep -E "^(${sSearch})" $logfile | cut -f 2- -d ':'
echo
fi
echo ">>> Summary of database backup actions:"
cat $logfile | grep "__[A-Z][A-Z]*__" | grep '__DB__' | filterColor
echo
# echo ">>> Summary of backed up directories:"
# cat $logfile | grep "DIR "
echo ">>> Summary of backup actions:"
cat $logfile | grep "__[A-Z][A-Z]*__"
echo ">>> Summary of transfer actions:"
cat $logfile | grep "__[A-Z][A-Z]*__" | grep -v '__DB__' | filterColor
echo
sShort="$sShort - OK: $iOK ... Errors: $iError"
# done
fi
echo ">>> Backup repository:"
echo "__LAST__backup " $(showAge "$logdir/last_backup")
echo "__LAST__prune " $(showAge "$logdir/last_prune")
echo "__LAST__verify " $(showAge "$logdir/last_verify")
echo
echo "MONITORINFO: $sShort"
echo "STATUS $0 - final returncode rc=$iError"
Loading