You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.4 KiB
63 lines
1.4 KiB
#! /bin/bash -e |
|
|
|
prefix="@prefix@" |
|
host=${1:-generic} |
|
type=${2:-daily} |
|
num=${3:-1} |
|
|
|
HOST=$host |
|
test -e "@sysconfdir@/backup.conf" && . "@sysconfdir@/backup.conf" |
|
|
|
# warn if backup is n-times too old |
|
warn=${4:-1} |
|
|
|
# critical if backup is n-times too old |
|
crit=${5:-3} |
|
|
|
# backup period in days to check if backup timestamp is actual |
|
case "$type" in |
|
(daily) period=${6:-1};; |
|
(weekly) period=${6:-7};; |
|
(monthly) period=${6:-31};; |
|
(*) period=${6:-0};; |
|
esac |
|
|
|
days=$((${num}*${period})) |
|
dir=${TARGET:-/media/backup}/${host}-${type}.${num} |
|
file=${dir}/backup-timestamp |
|
name=${host}-${type}.${num} |
|
|
|
if ps -fC backup-${host//./_} | grep -q ${type}; then |
|
running=" - backup is running" |
|
critstat="WARNING - " |
|
critret=1 |
|
else |
|
running="" |
|
critstat="CRITICAL - " |
|
critret=2 |
|
fi |
|
|
|
if ! test -d ${dir}; then |
|
echo "${critstat}missing backup: ${name}${running}" |
|
exit $critret |
|
fi |
|
|
|
if ! test -f ${file}; then |
|
echo "${critstat}backup not complete: ${name}${running}" |
|
exit $critret |
|
fi |
|
|
|
age=$((($(date +"%s")-$(stat -c "%Z" ${file}))/3600/24)) |
|
|
|
if test ${age} -gt $((${days}*${crit})); then |
|
echo "${critstat}backup of ${name} too old, ${age} instead of ${days} days${running}" |
|
exit $critret |
|
fi |
|
|
|
if test ${age} -gt $((${days}*${warn})); then |
|
echo "WARNING - backup of ${name} too old, ${age} instead of ${days} days${running}" |
|
exit 1 |
|
fi |
|
|
|
echo "OK - successful backup of ${name}${running}" |
|
exit 0
|
|
|