#!/bin/bash

##############
### CONFIG ###
##############

# webspace (ftp)
USER=""                         # Username for FTP
PASSWORD=""                     # Password for FTP
HOST="ftp.lima-city.de"         # The FTP-Host

# Database:
DB_USER=""                      # MySQL-User
DB_PASSWORD=""                  # MySQL-Password
DB_HOST="mysql.lima-city.de"    # MySQL Host
DATABASE='-A'                   # '-A' for all! else all databses seperated by space

# Download-Server
# Consumes Download-Volume
DL_USER=""                      # Download-Server User
DL_PASSWORD=""                  # Download-Server Password
DL_HOST="download.lima-city.de" # Download-Server Hostname (ftp)
DL=0                            # 1 = Do backup; 0 = No Backup

# target
DIR='./files/'                  # Dir where the Backups are saved; You need the final "/" !

##################
### END CONFIG ###
##################


DATE=$(date +'%Y-%m-%d_%H-%M-%S')

if [ ! -d $DIR ] ; then
    mkdir $DIR
fi

echo "Deleting old backups..."
for i in $(find "$DIR" -iname '*.sql.bz2' | sort -rf | head -n-4) ; do
    rm -v "$i"
done
for i in $(find "$DIR" -iname '*_webspace.tar.bz2' | sort -rf | head -n-4) ; do
    rm -v "$i"
done
for i in $(find "$DIR" -iname '*_download.tar.bz2' | sort -rf | head -n-4) ; do
    rm -v "$i"
done

######################
# do database backup #
######################

if [ ! "$DATABASE" = '-A' ] ; then
    DATABASE="--databases $DATABASE"
fi

echo "Saving MySQL backup..."
mysqldump --lock-tables=false -u$DB_USER -h$DB_HOST -p$DB_PASSWORD $DATABASE | \
    bzip2 > ${DIR}${DATE}.sql.bz2
echo "Backup saved as '$DIR$DATE.sql.bz2'"

######################
# do webspace backup #
######################

echo "Making backup of Webspace..."
# temp dir
mkdir tmp
cd tmp
# download the files
lftp -u "$USER:$PASSWORD" $HOST -e 'mirror . ; quit'
# put them in an archive
tar cavf "../${DIR}${DATE}_webspace.tar.bz2" *
#and remove the temp files
cd ..
rm -rf tmp
echo "Backup saved as ${DIR}${DATE}_webspace.tar.bz2"

##########################
# Backup Download-Server #
##########################

if [ $DL -eq 1 ] ; then
    echo "Backing Up Download-Server..."
    # temp dir
    mkdir tmp
    cd tmp
    # receive filelist
    FILES=$(lftp -u "$DL_USER:$DL_PASSWORD" $DL_HOST -e 'find ; quit' | \
        sed -rn 's_^\./(.+[^/ ])\s*$_\1_p')
    for i in $FILES ; do
        d="./${i%$(basename $i)}"
        [ ! -d "$d" ] && mkdir "$d"
        wget "http://download.lima-city.de/$USER/$i" -O "$i"
    done
    tar cavf "../${DIR}${DATE}_download.tar.bz2" *
    cd ..
    rm -rf tmp
    echo "Backup saved as ${DIR}${DATE}_download.tar.bz2"
fi