#!/bin/bash
#echo `date` >> /tmp/livebackup.log
cd /opt/euro-beta

#How often we will run (in minutes )
BACKUP_FREQUENCY=5
BACKUP_COUNT=100

BACKUP_MAX_MIN=$(($BACKUP_FREQUENCY*$BACKUP_COUNT))
LIVE_BACKUP_MOUNT="/mnt/live_backup"  
LIVE_BACKUP_MOUNTED=`mount | grep $LIVE_BACKUP_MOUNT`
LIVE_BACKUP_SIGNATURE=$LIVE_BACKUP_MOUNT/livebackup.txt
LIVE_BACKUP_INHIBIT=$LIVE_BACKUP_MOUNT/livebackup.inhibit
BACKUPNAME=$LIVE_BACKUP_MOUNT/live_`date +%Y_%m_%d__%H_%M`.sql
BACKUP_WARNING=live_backup.warning
BACKUP_ERR=live_backup.err
EURO3G_BACKUP_UUID="euro3g_live_backup_uuid"
LIVE_BACKUP_UUID="usb_disc_live_backup_uuid"
EURO3G_BACKUP_UUID_FILE="/opt/euro-beta/live_backup.uuid"
LIVE_BACKUP_UUID_FILE=$LIVE_BACKUP_MOUNT/live_backup.uuid


if [ -f $LIVE_BACKUP_INHIBIT  ] ;
then
  exit 0
fi  

if [ -f $LIVE_BACKUP_UUID_FILE  ] ;
then
  LIVE_BACKUP_UUID=`cat $LIVE_BACKUP_UUID_FILE`
fi  

if [ -f $EURO3G_BACKUP_UUID_FILE  ] ;
then
  EURO3G_BACKUP_UUID=`cat $EURO3G_BACKUP_UUID_FILE`
fi  


source /opt/euro-beta/set3g_env
if ! which sysmsg >/dev/null 2>&1 ;
then
  PATH=$PATH:/opt/euro-beta
fi
export DISPLAY=:0


if [ ".$LIVE_BACKUP_SIGNATURE." != ".." -a -f $LIVE_BACKUP_SIGNATURE -a ".$LIVE_BACKUP_UUID." != ".$EURO3G_BACKUP_UUID." ] ;
then
  aplay /opt/euro-beta/warning.wav
  TITLE="Euro3G - Live Backup "
  sysquery "$TITLE" "<b>E' stato collegato disco USB predisposto per il salvattaggio continuo.<br> Abbinare disco a questa macchina ed attivare il salvattaggio ?</b>" "Si, procedere" "No, non fare niente"
  if [ $? == 0 ] ;
  then
    uuidgen > $EURO3G_BACKUP_UUID_FILE
    cp $EURO3G_BACKUP_UUID_FILE $LIVE_BACKUP_UUID_FILE
  else
    sysquery "$TITLE" "<b>Disattivare la predisposizione per il salvattaggio continuo ?</b>" "Si, disattivare" "No, non fare niente"
    if [ $? == 0 ] ;
    then
      touch $LIVE_BACKUP_INHIBIT
    fi
#    LIVE_BACKUP_DEV=`stat -c "%m" $LIVE_BACKUP_SIGNATURE`
#    umount $LIVE_BACKUP_DEV
    exit 0
  fi
fi


if [ ".$LIVE_BACKUP_SIGNATURE." != ".." -a -f $LIVE_BACKUP_SIGNATURE -a ! "`find -L $LIVE_BACKUP_MOUNT/eurotest.sql.gz -mmin -$BACKUP_FREQUENCY 2>/dev/null`" ] ;
then
  BACKUP_OK="no"

  if    systools/backup_db eurotest --no-progress --message live_backup_db --outfile $BACKUPNAME.gz > /dev/null 2>$BACKUP_ERR \
     && nice cp --reflink=auto $BACKUPNAME.gz $LIVE_BACKUP_MOUNT/eurotest.tmp 2>$BACKUP_ERR \
     && nice mv -f $LIVE_BACKUP_MOUNT/eurotest.tmp $LIVE_BACKUP_MOUNT/eurotest.sql.gz 2>$BACKUP_ERR
  then
      BACKUP_OK="yes"
      rm $BACKUP_WARNING 2>/dev/null
      nice find -L $LIVE_BACKUP_MOUNT -type f -iname "live*sql.gz" -cmin +$BACKUP_MAX_MIN -exec nice rm -f {} \;
      nice rm $LIVE_BACKUP_MOUNT/live_*.sql	
  fi

  if [ ".$BACKUP_OK." != ".yes." -a ! "`find -L $BACKUP_WARNING -mmin -$BACKUP_FREQUENCY 2>/dev/null`" ]
  then
      touch $BACKUP_WARNING
      SYS_ERROR=`cat $BACKUP_ERR | tr ":" "\n" | tail -1`
      ERR_MSG="Impossibile completare salvattagio automatico.\n( "$SYS_ERROR" )"
      ./systools/set_warning "Backup Automatico" "$ERR_MSG"  
  fi  

fi 


exit 0
