#************************************************************************************
#*  BACKUP script version 1.0 voor UBUNTU HOMESERVER.       Ben Makkink 02/11/2024  *
#*  Eenvoudig programma om backups te maken van het Ubuntu OS van de server,        *
#*  Piwigo of Wordpress                                                             *
#************************************************************************************
# * Verifieer dat de voor script 'backup' benodigde bestanden in /usr/local/bin
# * aanwezig zijn.
#!/bin/bash

# * 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

# * 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);

# Datum meest recente systeembackup
fn=$(ls -t $sysbackdir | head -n1);
laatste=$(date -r $sysbackdir$fn +'%d-%m-%Y');

# Geef menu weer
clear
echo
echo
echo "                       +++ BACKUP UBUNTU HOMESERVER Version 1.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 "      ('/' excl. swap.img, /proc, /dev, /tmp, /mnt, /sys, /run, /media, /home,"
echo "       /var/cache/apt/archives, /usr/src/linux-headers*, /vault, /store,"
echo "       /var/www/html, /var/lib/backuppc, /var/lib/mysql)"
echo "   2- PIWIGO backup en utilitie programma's"
echo "   3- WORDPRESS backup en utilitie programma's"
echo "   4- 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
                [1234qQ]) optie=$optie ;;
                
                *) optie=;;
        esac
done    
echo;
echo "  =================================================================================="

case $optie in
  [qQ]) clear;;

  1) echo; # clear;
        yn="n"
        echo
        echo "   De backup van het Ubuntu-OS wordt al wekelijks automatisch gemaakt (cron)"
        echo "   Dit was de laatste keer op "$laatste;
        echo -n "   Toch een extra backup naar "$sysbackdir" maken? Y/N: " 
	read yn
	case $yn in
         [Yy])
         sysback;;
        esac
        backup;;

  2) echo; clear;
        /usr/local/bin/backuppwg;
        # echo "   backuppwg en utilities";
        # echo -n "   Druk <Enter> om verder te gaan: "; read foo;           
        backup ;;

  3) echo; clear;
        /usr/local/bin/backupwp;
        # echo "   backupwp en utilities";
        # echo -n "   Druk <Enter> om verder te gaan: "; read foo;
        backup ;;

  4) echo; clear;
        less /usr/local/bin/sysback_restore_readme;
        backup ;;
esac
