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.
64 lines
1.4 KiB
64 lines
1.4 KiB
9 years ago
|
#! /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
|