#************************************************************************************
#*  BACKUP script version 3.0 Voor HOMESERVER.                Ben Makkink 23/06/2017*
#*  Eenvoudig programma om backups te maken van het OS-systeem van de server,       *
#*  Piwigo en/of Wordpress                                                          *
#************************************************************************************
# * Verifieer dat de voor script 'backup' benodigde bestanden in /usr/local/bin
# * aanwezig zijn.

# * 1: 'mysql_access' met Mysql inloggegevens
clear;
ok="y";
if [ ! -f /usr/local/bin/.mysql_access ]
   then
	 echo;
     echo "     Bestand 1 : '.mysql_access' mist in /usr/local/bin!";
	 ok="n";
fi

# * 2: 'backuppwg' met Piwigo backupprogramma
if [ ! -f /usr/local/bin/backuppwg ]
   then
         echo;
     echo "     Bestand 2 : 'backuppwg' mist in /usr/local/bin!";
         ok="n";
fi

# * 3: 'backuppwg_readme' met gebruikersinstructies
if [ ! -f /usr/local/bin/backuppwg_readme ]
   then
         echo;
     echo "     Bestand 3 : 'backuppwg_readme' mist in /usr/local/bin!";
         ok="n";
fi

# * 4: 'backupwp' met Wordpress backupprogramma
if [ ! -f /usr/local/bin/backupwp ]
   then
         echo;
     echo "     Bestand 4 : 'backupwp' mist in /usr/local/bin!";
         ok="n";
fi

# * 5: 'backupwp_readme' met gebruikersinstructies
if [ ! -f /usr/local/bin/backupwp_readme ]
   then
         echo;
     echo "     Bestand 5 : 'backupwp_readme' mist in /usr/local/bin!";
         ok="n";
fi

# * 6: 'Piwigo-hacks' met gebruikers-hacks backupprogramma
if [ ! -f /usr/local/bin/piwigo-hacks ]
   then
         echo;
     echo "     Bestand 6 : 'piwigo-hacks' mist in /usr/local/bin!";
         ok="n";
fi

# * 7: 'Piwigo-hacks_readme' met piwigo-hacks gebruikersinstructies
if [ ! -f /usr/local/bin/piwigo-hacks_readme ]
   then
         echo;
     echo "     Bestand 7 : 'piwigo-hacks_readme' mist in /usr/local/bin!";
         ok="n";
fi

# * 8: 'sysback' het script dat de OS-systeem backup-tarball maakt
if [ ! -f /usr/local/bin/sysback ]
   then
         echo;
     echo "     Bestand 8 : 'sysback' mist in /usr/local/bin!";
         ok="n";
fi

# * 9: 'backup_restore_readme' met sysback gebruikersinstructies
if [ ! -f /usr/local/bin/sysback_restore_readme ]
   then
         echo;
     echo "     Bestand 9 : 'sysback_restore_readme' mist in /usr/local/bin!";
         ok="n";
fi

# * 10: 'stackbackup' script voor backup/synchronisatie met Stack
if [ ! -f /usr/local/bin/stackbackup ]
   then
         echo;
     echo "     Bestand 10 : 'stackbackup' mist in /usr/local/bin!";
         ok="n";
fi

# * Bericht als bestand(en) missen
if [ $ok == "n" ]
    then
	echo;
	echo "     ===============================================================================";
    echo "     Installeer eerst bovenstaande bestand(en), het script 'Backup' heeft deze nodig!!";
	echo "     ===============================================================================";
	echo -n "     Druk <Enter> om verder te gaan: "; read foo;
	echo;
	exit;  #exit script omdat bestanden missen in /usr/local/bin/
fi

# *****************************************************************************************
# * Als alle benodigde bestanden in /usr/local/bin/ bestaan; start het script
# *****************************************************************************************

# include verborgen bestand met setting van de MYSQL wachtwoorden
# Het bestand .mysql_access moet wel in dezelfde directory staan als dit script
. .mysql_access

# Plaats jezelf in de root
cd /;

# Set VARIABLES
# Geef hier aan waar OS-backups opgeslagen moeten worden
sysbackdir="/vault/sysback/";

# Geef hier aan welk datumformaat gebruikt moet worden voor de betandsnaam van de backup
datestamp=$(date +%Y%m%d)

# Maak de variabele met de datum en tijd van de vorige gallery backup/synchronisatie
syncfile=$source_data"/synchronisatie*";
lastsync=$(date -r $syncfile +%d/%m/%Y-%X);

# Geef menu weer
clear
echo
echo
echo "                       +++ BACKUP HOMESERVER Version 3.0 +++"
echo "   =================================================================================="
echo "   Eenvoudig programma voor het maken van backups"
echo
echo "   'OS-systeem backups' worden opgeslagen in: "$sysbackdir
echo "   Als hier al een tarball met betreffende data bestaat, ouder dan 14 dagen, dan"
echo "   wordt deze verwijderd."
echo "   =================================================================================="
echo "   BACKUP opties:"
echo                   
echo "   1- OS-systeem backup"
echo "      ('/' exclusief /vault, /proc, /run, /sys, /home, /store, /var/www/html,"
echo "       /var/lib/BackupPC, /var/lib/system-mysql, /var/lib/mysql,"
echo "       /var/clearos/configuration_backup en /run)"
echo "   2- PIWIGO backup"
echo "   3- WORDPRESS backup"
echo "   4- STACK backup/synchronisatie naar de cloud"
echo "   5- Gebruikersinstructies voor Server RESTORE met een SYSBACK backup"
echo "   ----------------------------------------------------------------------------------"
optie=
while [ -z $optie ] ;do
	echo -n "   Kies optienummer of Q om te stoppen: "
	read  optie
	case $optie in
                [12345qQ]) optie=$optie ;;
                *) optie=
        esac
done    
echo "  =================================================================================="

if (($optie==1))
        then
        yn="n"
        echo
        echo "   Deze systeem backup wordt al wekelijks automatisch gemaakt (cron)"
        echo -n "   Toch nu een backup van OS-systeem naar "$storedir"sysback/ maken? Y/N: " 
	read yn
	case $yn in
         [Yy]) sysback;;
        esac
        backup ;
fi

# *************************************************************************************************
case $optie in
  [qQ]) clear;;
  2) echo; clear;
        /usr/local/bin/backuppwg;
        backup ;;
  3) echo; clear;
        /usr/local/bin/backupwp;
        backup ;;
  4) echo; clear;
        /usr/local/bin/stackbackup;
        backup ;;
  5) echo; clear;
        less /usr/local/bin/sysback_restore_readme;
        backup ;;
esac
