#!/bin/sh
#
# chown root:root /usr/local/bin/backupDBs2USB-SDA
# chmod 755       /usr/local/bin/backupDBs2USB-SDA
# ln -s           /usr/local/bin/backupDBs2USB-SDA /etc/cron.daily/backupDBs2USB-SDA
#
#set -x
#

DISK2CLONE="mmcblk0"
SRC_DEV="/dev/"$DISK2CLONE
DST_DEV="/dev/sda"
uSD_PART=$SRC_DEV"p2"
ROOT_FS=$(/usr/bin/df -H / | /usr/bin/awk '!/Filesystem/ {print $1}' )
BAD_SECTORS_LOG="/var/log/eulink/badsectors_"$DISK2CLONE".log"
NO_BAK_FLAG="/etc/eulink/noCloneBoot2USB.flag"
#
#
# Check 'Verbose mode' command line args
if [ "$1" = "-v" ]; then SYSLOGGER='/usr/bin/logger -s'; CP_OPT="-v"; else SYSLOGGER='/usr/bin/logger'; CP_OPT=""; fi

if [ -f $NO_BAK_FLAG ]; then $SYSLOGGER "Flag "$NO_BAK_FLAG" found, exiting"; exit 4; fi

if [ "$ROOT_FS" = "$uSD_PART" ]; then
	if [ ! -d /mnt/sda2 ]; then /usr/bin/mkdir /mnt/sda2; fi
	if [ ! -d /mnt/sda3 ]; then /usr/bin/mkdir /mnt/sda3; fi
	
	if [ -b /dev/sda2 ]; then
		if [ -d /mnt/sda2/tmp ]; then /usr/bin/umount /mnt/sda2; /usr/bin/sleep 2; fi
		/usr/bin/mount /dev/sda2 /mnt/sda2
		retval=$?
#		echo "Retval = "$retval
		if [ $retval -gt 0 -a $retval -ne 32 ]; then
			/usr/sbin/e2fsck -fy /dev/sda2
			/usr/bin/mount /dev/sda2 /mnt/sda2
			retval=$?
			if [ $retval -gt 0 -a $retval -ne 32 ]; then
				$SYSLOGGER "Cannot mount "$DST_DEV"2, exiting."
				exit $retval
			fi
			fi
		MNT_ETC="/mnt/sda2/etc"
		MNT_USR="/mnt/sda2/usr"
		if [ -b /dev/sda3 ]; then 
			if [ -d /mnt/sda3/log ]; then /usr/bin/umount /mnt/sda3; /usr/bin/sleep 2; fi
			/usr/bin/mount /dev/sda3 /mnt/sda3
			retval=$?
			if [ $retval -gt 0 -a $retval -ne 32 ]; then
				/usr/sbin/e2fsck -fy /dev/sda3
				/usr/bin/mount /dev/sda3 /mnt/sda3
				retval=$?
				if [ $retval -gt 0 -a $retval -ne 32 ]; then
					$SYSLOGGER "Cannot mount "$DST_DEV"3, exiting."
					exit $retval
				fi
			fi
			MNT_VAR="/mnt/sda3"
		else
			MNT_VAR="/mnt/sda2/var"
		fi
		$SYSLOGGER "Backup DBs to SDA started"
		# copy binaries and databases to backup microSD (-recursive, -forced, -preserved mode and ownership):
		/usr/bin/cp -rfp $CP_OPT /usr/local/bin/eulink          $MNT_USR/local/bin
		/usr/bin/cp -rfp $CP_OPT /var/lib/influxdb              $MNT_VAR/lib
		/usr/bin/cp -rfp $CP_OPT /var/lib/mysql                 $MNT_VAR/lib
		/usr/bin/cp -rfp $CP_OPT /var/local/eulink/backups      $MNT_VAR/local/eulink
		/usr/bin/cp -rfp $CP_OPT /etc/eulink                    $MNT_ETC
		/usr/bin/cp -fp  $CP_OPT /var/log/syslog                $MNT_VAR/log
		/usr/bin/cp -fp  $CP_OPT /var/log/eulink/core.log       $MNT_VAR/log/eulink
		/usr/bin/cp -fp  $CP_OPT /var/log/eulink/cpu_load.log   $MNT_VAR/log/eulink
		/usr/bin/cp -fp  $CP_OPT /var/log/eulink/cpu_temp.log   $MNT_VAR/log/eulink
		/usr/bin/cp -fp  $CP_OPT /var/log/eulink/open_files.log $MNT_VAR/log/eulink
		/usr/bin/cp -fp  $CP_OPT $BAD_SECTORS_LOG               $MNT_VAR/log/eulink/badsectors_$DISK2CLONE.log
		if [ -f /var/log/eulink/install.date ]; then /usr/bin/cp -fp  $CP_OPT /var/log/eulink/install.date   $MNT_VAR/log/eulink; fi
		
		/usr/bin/umount /mnt/sda2
		if [ -d /mnt/sda3/log ]; then /usr/bin/umount /mnt/sda3; else /usr/bin/umount /mnt/sda2; fi
		$SYSLOGGER "Backup DBs to SDA completed"
	else
		$SYSLOGGER "Backup DBs to SDA failed, target "$DST_DEV" device missing"
		exit 1
	fi
else
	$SYSLOGGER "Root filesystem "$ROOT_FS" is not on microSD, copying DBs is not necessary"
fi
