1#!/bin/bash
2set -o pipefail
3
4#set -x
5PROGNAME="$(basename $0)"
6
7BACKUP_DIR=~sogo/backups
8SOGO_TOOL=/usr/sbin/sogo-tool
9DAYS_TO_KEEP="30"
10
11DATE=$(date +%F_%H%M)
12LOG="logger -t $PROGNAME -p daemon.info"
13
14# log to stdout if on a tty
15tty -s && LOG="cat -"
16
17function initChecks {
18  if [ ! -d "$BACKUP_DIR" ]; then
19    mkdir -m700  -p "$BACKUP_DIR"
20    if [ $? -ne 0 ]; then
21  	  echo "BACKUP_DIR doesn't exist and couldn't create it, aborting ($BACKUP_DIR)" | $LOG
22  	  exit 1
23    fi
24  fi
25
26  if [ ! -w "$BACKUP_DIR" ]; then
27    echo "$BACKUP_DIR not writable. Aborting" | $LOG
28    exit 1
29  fi
30}
31
32function removeOldBackups {
33
34  if [ ! -z $DRYRUN ]; then
35    RM="echo \"not deleted\""
36  else
37    RM="rm -rf"
38  fi
39
40  echo "Deleting old backups..." | $LOG
41  find ${BACKUP_DIR}/ -maxdepth 1 -type d -iname "sogo-*" -mtime "+$DAYS_TO_KEEP" -ls -exec $RM {} \; 2>&1 | $LOG
42  echo "Done deleting old backups." | $LOG
43}
44
45
46function dumpit {
47  mkdir -m700  "$BACKUP_DIR/sogo-${DATE}" 2>&1  | $LOG
48  if [ $? -ne 0 ]; then
49    exit 1
50  fi
51  $SOGO_TOOL backup "$BACKUP_DIR/sogo-${DATE}/" ALL 2>&1 | $LOG
52  RC=$?
53  if [ $RC -ne 0 ]; then
54    echo -e "FAILED, error while dumping sogo data" | $LOG
55    exit $RC
56  else
57    echo -e "OK: dumped sogo data" | $LOG
58  fi
59}
60
61echo "$PROGNAME starting" | $LOG
62initChecks
63dumpit
64removeOldBackups
65echo "$PROGNAME exiting" | $LOG
66
67
68