Skip to content
Snippets Groups Projects
Commit 6986483b authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

show last backup, prune and verify

parent 0c2ff046
No related branches found
No related tags found
1 merge request!81show last backup, prune and verify
......@@ -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"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment