#!/bin/bash
set -e

############################################
# DATE VARIABLES
############################################
week=$(date +%Y-%U)
day_of_month=$(date +%d)
today=$(date +%F)
yesterday=$(date -d "yesterday" +%F)

############################################
# BASE LOCATIONS
############################################
BACK_BASE="/opt/DBBackup"
THREEDAY_DIR="${BACK_BASE}/ThreeDays"
WORKING_DIR="${THREEDAY_DIR}/${week}/WebSite_${today}"
DAILY_DB_COPY="/opt/DBBackup/DailyDBBackup"

############################################
# WEBSITE ROOT
############################################
WEBROOT="/var/www/html/nmc-elections"

############################################
# TAR EXCLUSIONS (HEAVY DATA)
############################################
EXCLUDES=(
  --exclude="/var/www/html/nmc-elections/storage"
)

# DISK SPACE CHECK
############################################
MIN_FREE_KB=1500000
FREE_KB=$(df -k / | awk 'NR==2 {print $4}')

if [ "$FREE_KB" -lt "$MIN_FREE_KB" ]; then
    echo "ERROR: Low disk space. Backup aborted."
    exit 1
fi

############################################
# DATABASE BACKUP (UNCHANGED)
############################################

DBAll()
{
    mkdir -p "${WORKING_DIR}/DB"

    mysqldump -u root -pRedhat@2k23 --all-databases | gzip \
        > "${WORKING_DIR}/DB/all_mysqldatabases_${today}.gz"

    mysqldump -u root -pRedhat@2k23 mysql user | gzip \
        > "${WORKING_DIR}/DB/all_mysqlUsers_${today}.gz"

    tar -czf "${WORKING_DIR}/DB_${today}.tar.gz" -C "${WORKING_DIR}" DB
#    cp "${WORKING_DIR}/DB_${today}.tar.gz" "$DAILY_DB_COPY"

    rm -rf "${WORKING_DIR}/DB"
}

############################################
# DAILY FULL TAR BACKUP (LOCAL)


############################################
daily()
{
    rm -rf "${WORKING_DIR}"
    mkdir -p "${WORKING_DIR}"

    # Cleanup old local backups (15 days)
#    find "$THREEDAY_DIR" -type f -mtime +15 -exec rm -f {} \;

    echo "Starting FULL tar website backup (excluding heavy folders)"

    tar -czf "${WORKING_DIR}/htdocs-WebSite_${today}.tar.gz" \
        "${EXCLUDES[@]}" \
        "$WEBROOT"

    DBAll
}

daily

echo "Backup completed successfully on $today"

