#!/bin/sh
export PATH="$PATH:/usr/sbin:/usr/local/bin"

remotedir=/mnt/ppcbackup-duplicity
destdir="$remotedir/ppcdirdev"
logfile_duplicity=/var/log/ppcdirdev-backup-duplicity.log
status=/var/spool/ppcdirdev/backup-status
lockfile=/tmp/`basename $0`.flock

die() {
  echo "$@" >&2
  exit 1
}

if [ x"$1" != x"locked" ]; then
  running=$(ps -e -o pid,cmd | grep "[f]lock -n $lockfile")
  [ -z "$running" ] || echo "already running: $running"
  flock -n $lockfile -c "$0 locked $@" &
  exit 42
fi
shift

[ -f $logfile_duplicity ] || touch $logfile_duplicity
[ -d /var/spool/ppcdirdev ] || mkdir -p /var/spool/ppcdirdev

mkdir -p $remotedir
if ! grep $remotedir /proc/mounts; then
  /sbin/mount.rfs ppcbackup03h.yandex.ru:/local/backup/duplicity/ $remotedir -o _netdev,rw || die "Can't mount glusterfs share"
fi
mkdir -p $destdir

duplicity remove-older-than 1M --no-encryption --force \
         --verbosity notice \
         --archive-dir /root/.cache/duplicity \
         --log-file $logfile_duplicity \
         file://"$destdir" || die "something wrong with duplicity"

duplicity --no-encryption \
         --verbosity notice \
         --full-if-older-than 7D \
         --num-retries 3 \
         --asynchronous-upload \
         --volsize 25 \
         --archive-dir /root/.cache/duplicity \
         --log-file $logfile_duplicity \
         --exclude /home/zhur \
         /home file://"$destdir" || die "something wrong with duplicity"

umount $remotedir

echo `date +%s` > $status

