#************************************************************************************
#*  BACKUPWP script version 1.0                               Ben Makkink 03/12/2016*
#*  Eenvoudig programma om backups/syncs te maken van WORDPRESS (incl. SQL database)*
#*  en/of user hacks                                                                * 
#************************************************************************************
# * Verifieer dat de voor script 'backupwp' 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: 'backupwp_readme' met gebruikersinstructies
if [ ! -f /usr/local/bin/backupwp_readme ]
   then
	 echo;
     echo "     Bestand 2 : 'backupwp_readme' mist in /usr/local/bin!";
	 ok="n";
fi

# * 3: 'wordpress-hacks' script voor maken tarballs user-hacks
if [ ! -f /usr/local/bin/wordpress-hacks ]
   then
         echo;
     echo "     Bestand 3 : 'wordpress-hacks' mist in /usr/local/bin!";
         ok="n";
fi

# * 4: 'wordpress-hacks_readme' met gebruikers instructies
if [ ! -f /usr/local/bin/wordpress-hacks_readme ]
   then
         echo;
     echo "     Bestand 4 : 'wordpress-hacks_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 'backupwp' 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

# Set VARIABLES

# Geef hier aan waar het 'wordpress' programma zich bevindt
source_prog="/var/www/html/blog";

# Geef hier aan waar de buiten de webroot geplaatste 'wordpress data' zich bevinden
source_data="/home/wpdata"

# Geef hier aan waar wordpress-backups opgeslagen moeten worden
storedir="/vault/wordpress/";

# 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 wordpress backup/synchronisatie
syncfile=$source_data"/synchronisatie*";
lastsync=$(date -r $syncfile +%d/%m/%Y-%X);

# Geef menu weer
clear
echo
echo "                             WORDPRESS Backup/Synchronisatie"
echo "  ==========================================================================================="
echo "  Bij de 'Backup' of 'Synchronisatie' worden nieuwe/gewijzigde bestanden naar de backupdisk"
echo "  geschreven."
echo "  Als in de bron bestanden verwijderd zijn worden deze bij 'Synchronisatie' ook"
echo "  uit het doel verwijderd."
echo "  Bij 'Backup' blijven deze bestanden in het doel bewaard."
echo "  Dagelijks wordt dmv crontab een 'Backup' uit gevoerd met het script BACKUPWP"
echo
echo "  De laatste Backup/Synchronisatie van het WORDPRESS programma /var/www/html/blog en de"
echo "  'wp-content/uploads' directory incl. een nwe. export van de MySQL database 'wordpress' naar"
echo "  "$storedir" vond plaats op:"
echo "                             "$lastsync
echo "  ==========================================================================================="

echo "  WORDPRESS Backup opties:"
echo
echo "  1- Backup - Kopieer nieuwe/gewijzigde bestanden. Behoud bestanden verwijderd uit bron"
echo "  2- Synchroniseer - Kopieer nieuwe/gewijzigde bestanden. Verwijder indien alleen in doel"
echo "  3- Gebruikersinstructies voor Wordpress RESTORE en automatisch backup met cron"
echo "  4- Wordpress User-Hacks Backup"
echo "  -------------------------------------------------------------------------------------------"
keuze=
while [ -z $keuze ] ;do
   echo -n "  Kies optienummer of Q om terug te gaan naar hoofdmenu: "
   read keuze
   case $keuze in
     [1234qQ]) keuze=$keuze;;
     *) keuze=
   esac
done
echo "  ==========================================================================================="
echo

case $keuze in
  [12])
    echo "Bezig met Export MySQL database 'wordpress'...";
    mysqldump -uroot -p$MYSQL_PWD_R --opt --databases wordpress > $source_data/dbase_dump/"wp-dump"$datestamp".sql";
    echo;
    rm -rf $syncfile;
# Verwijder oude synchronisatiedatum bestanden uit 'storedir'
    find $storedir -maxdepth 2 -mtime +7 -name synchronisatiedatum* -exec rm {} \;;
    touch $source_data"/synchronisatiedatum-"$datestamp;
# Verwijder dbase_dumps in source_data ouder dan 7 dagen
    find $source_data/dbase_dump/ -maxdepth 2 -mtime +7 -name *wp-dump* -exec rm {} \;
    case $keuze in
       1) echo "Bezig met Backup van Wordpress (zonder delete)...";
          rsync -av $source_prog $storedir;
          echo;
          echo "Bezig met Backup van WPDATA (zonder delete)...";
          rsync -av $source_data $storedir;
          echo "Verwijder databasedumps die niet meer in bron voorkomen...";
          rsync -avzh --delete $source_data/dbase_dump $storedir"wpdata";
          echo;
          echo -n "   Backup afgerond, druk <ENTER> om terug te gaan naar menu."; read foo;
          backupwp;;
       2) echo "Bezig met Synchronisatie van Wordpress (met delete)...";
          rsync -av $source_prog --delete $storedir;
          echo;
          echo "Bezig met Synchronisatie van WPDATA (met delete)...";
          rsync -av $source_data --delete $storedir;
          echo;
          echo -n "   Synchronisatie afgerond, druk <ENTER> om terug te gaan naar menu."; read foo;
          backupwp;;
    esac;;
  3) echo; clear;
        less /usr/local/bin/backupwp_readme;
        backupwp ;;
  4) echo; clear;
        /usr/local/bin/wordpress-hacks;
        backupwp ;;
  [qQ]) clear;;
esac
