On Tue, 22 Dec 2009, Renevith wrote:
> I don't have any good ideas just from the descriptions you've given, so
> it's probably easiest for me to just look at the files themselves. If you
> post them to the list, I'll take a look. Seeing master.conf might also be
> helpful.
Andy,
Thank you. Here are the three scripts:
/etc/dirvish/master.conf:
bank:
/media/hd0/backup/dirvish/server
rsh: ssh
image-default: %Y%m%d-%H%M
log: bzip2
index: bzip2
xdev: 1
exclude:
/proc
/etc/mtab
.kde/share/cache/*
.mozilla/firefox/*.default/Cache/*
/usr/src/**/*.o
*~
*.bak
lost+found/
post-server: /etc/dirvish/dirvish_mail
# there is no command so do an echo for dirvish_mail
pre-client: echo "PRE_CLIENT_RET_OK - No pre-client installed"
post-client: echo "POST_CLIENT_RET_OK - No post-client installed"
runall:
a-root 22:00
a-boot
a-home
a-usr
a-usrlocal
a-opt
a-var
a-tmp
a-vm
a-data1
a-data2
c-usr2
c-usr3
c-usr4
expire-default: never
# keep the sunday backups forever, the dailies for 3 months
expire-rule:
# MIN HR DOM MON DOW STRFTIME_FMT
* * * * 1-6 +3 months
* * * * 7 +1 year
------------------------------------------------------------
/root/dirvish-backup.sh:
#!/bin/bash
mount /media/hd0
/sbin/dirvish-expire --quiet
/sbin/dirvish-runall --quiet
umount /media/hd0
exit 0
------------------------------------------------------------
/etc/dirvish/dirvish_mail:
#!/bin/bash
#
# Send Summary-Mail to $MAILTO, if something bad happens send a second mail
# to $MAILERR
# dirvish_mail [--erroronly]
#
# EDIT HERE
# Mail-Adress for info and errormails
[email protected]
# errormails only
[email protected]
# Returncode
ERR=0
# DIRVISH-Vars
DV_DIR=$DIRVISH_DEST/..
DV_SUMMARY=$DV_DIR/summary
DV_LOG=$DV_DIR/log
DV_RSYNDERROR=$DV_DIR/rsync_error
DV_CLIENT=$DIRVISH_CLIENT
DV_SRC="$DIRVISH_SRC"
DV_STATUS=$DIRVISH_STATUS
PRE_STATUS=
POST_STATUS=
# Mail-Stuff
MAILTO="${MAILTO}"
MAILERR="${MAILERR}"
SUBJECT="Backup-$DV_CLIENT:$DIRVISH_SRC (backupserver)"
LC_CTYPE=en_US ; # let mail use 8bit charset
MAILFILE=$DV_DIR/mailfile
MAIL=mail
ERRONLY=false
if [ "$1" == '--erroronly' ]; then
ERRONLY=:
fi
# Check Rsync-Status
if [ "$DV_STATUS" == success ]; then
DV_STATUS_OK=:
else
DV_STATUS_OK=false
fi
# check pre-client Status
if grep -q "^PRE_CLIENT_RET_FAILED" $DV_LOG 2>/dev/null; then
DV_STATUS_OK=false
PRE_STATUS=FAILED
elif grep -q "^PRE_CLIENT_RET_OK" $DV_LOG 2>/dev/null; then
PRE_STATUS=OK
else
DV_STATUS_OK=false
PRE_STATUS=UNKNOWN
fi
# check post-client Status
if grep -q "^POST_CLIENT_RET_FAILED" $DV_LOG 2>/dev/null; then
DV_STATUS_OK=false
POST_STATUS=FAILED
elif grep -q "^POST_CLIENT_RET_OK" $DV_LOG 2>/dev/null; then
POST_STATUS=OK
else
DV_STATUS_OK=false
POST_STATUS=UNKNOWN
fi
STATUS_TXT="Rsync: $DV_STATUS Pre: $PRE_STATUS, Post: $POST_STATUS"
if $DV_STATUS_OK; then
if $ERRONLY; then
# No ERR, no mail wanted -> exit
exit 0
fi
SUBJECT="$SUBJECT: OK"
else
# CC an root
MAIL="$MAIL -c $MAILERR"
SUBJECT="### ERR ### - $SUBJECT: $STATUS_TXT"
(
echo
"========================================================================="
# ...
echo "ERROR: $DIRVISH_SERVER:$DV_DIR"
echo
"========================================================================="
echo ) >>$MAILFILE
fi
# Short summary
(
echo
"========================================================================="
echo "Status : $STATUS_TXT"
echo
"========================================================================="
echo "directory: $DV_DIR"
echo "Summary ($DV_SUMMARY):"
echo
"========================================================================="
sed 's/^/SUM: /' < $DV_SUMMARY ) >>$MAILFILE
if [ -s $DV_RSYNDERROR ]; then
(
echo
echo
"========================================================================="
echo "Rsync-Errors ($DV_RSYNDERROR):"
echo
"========================================================================="
) >>$MAILFILE
cat $DV_RSYNDERROR | sed 's/^/RSYNC_ERR: /' >> $MAILFILE
fi
(
echo
echo
"========================================================================="
echo "Logfile ($DV_LOG) (head and tail):"
echo
"========================================================================="
) >>$MAILFILE
if $DV_STATUS_OK; then
if [ -f $DV_LOG ]; then
(
echo "LOG: ..."
tail -30 $DV_LOG
echo
) | sed 's/^/LOG: /' >>$MAILFILE
fi
else
if [ -f $DV_LOG ]; then
LINES=`wc -l $DV_LOG | awk '{ print $1 }'`
if [ $LINES -gt 600 ]; then
head -200 $DV_LOG | sed 's/^/LOG: /' >>$MAILFILE
echo "LOG: ..." >>$MAILFILE
tail -200 $DV_LOG | sed 's/^/LOG: /' >>$MAILFILE
else
# small enough
sed 's/^/LOG: /' < $DV_LOG >>$MAILFILE
fi
fi
fi
# send mail and exit
$MAIL -s "$SUBJECT" "$MAILTO" <$MAILFILE
$DV_STATUS_OK || ERR=1
exit $ERR
_______________________________________________
Dirvish mailing list
[email protected]
http://www.dirvish.org/mailman/listinfo/dirvish