#!/bin/bash
#*********************************************************************************************
#* BACKUPWP Version 1.0 Script voor automatische synchronisatie (backup) van Wordpress data  *
#* Ben Makkink 09 november 2016                                                              *
#*********************************************************************************************
#* BELANGRIJK: Dit script wordt gebruikt door CRON voor het dagelijks maken van een          *
#* automatische backup. CRON gebruikt echter per default 'sh' ipv 'bash'.                    *
#* Als script geschreven is in 'bash' werkt het mogelijk niet onder CRON. Corrigeer dit      *
#* door op de eerste regel van het script '#!/bin/bash' te plaatsen. Nu wordt het script     *
#* uitgevoerd is 'bash' ondanks dat het door CRON in 'sh' aangeroepen wordt.                 *
#* *******************************************************************************************
# * 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 'backupwp' gebruikersinstructies
if [ ! -f /usr/local/bin/backupwp_readme ]
   then
	 echo;
     echo "     Bestand 2 : 'backupwp_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), 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
# Als dit script door CRON gebruikt wordt mag het pad naar .mysql_access niet relatief zijn
# CRON werkt vanuit de root en het pad naar het 'include' bestand moet dus 'full' zijn.
. /usr/local/bin/.mysql_access

# Ga naar de root /
cd /;

# 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 synchronisatie backups opgeslagen moeten worden
storedir="/vault/wordpress/";

# Geef hier aan welk datumformaat gebruikt moet worden voor de bestandsnaam
datestamp=$(date +%Y%m%d);

# Maak dump van Wordpress database naar /home/wpdata
#===================================================
# Maak een dump (export) van de mysql database 'wordpress' genaamd 'wp-dump.sql' in
# /home/wpdata/dbase_dump
mysqldump -uroot -p$MYSQL_PWD_R --opt --databases wordpress > $source_data/dbase_dump/wp-dump.sql;

# De datum van synchronisatie houden we bij met de naam van een bestand (zonder inhoud)
# Verwijder laatste bestand 
syncfile=$source_data"/synchronisatie*";
rm -rf $syncfile;

# Creeer nieuw bestand 'synchronisatiedatum'
touch $source_data"/synchronisatiedatum-"$datestamp;

# Backup alleen wordpress-programma naar $storedir
# Symbolic links worden gecopieerd en niet de achterliggende data
#=================================================================
rsync -avzh $source_prog $storedir;

# Backup 'wpdata'
rsync -avzh $source_data $storedir;

# Verwijder oude synchronisatiedatum bestanden uit 'storedir'
find $storedir -maxdepth 2 -mtime +7 -name synchronisatiedatum* -exec rm {} \;;

# ============================================================================================
# Zie BACKUPWP_README voor uitleg en restore instructies
# ============================================================================================
