#!/bin/bash
# ============================================
# DarTech Cloud - Backup automatique base de données
# A exécuter quotidiennement via cron sur le VPS
# ============================================

# --- Configuration ---
DB_USER="dartech_app"
DB_PASS="moiMOI123456-a"
DB_NAME="dartech_cloud"

DOSSIER_BACKUP_LOCAL="/root/backups-dartech-cloud"
RCLONE_REMOTE="wasabi2"                              # nom du remote rclone déjà configuré
RCLONE_BUCKET_PATH="dartech-backup-test/system-backups/db"  # adapter au bucket réel

JOURS_RETENTION=14    # nombre de jours de backups à garder en local et sur Wasabi

DATE_DU_JOUR=$(date +%Y%m%d_%H%M%S)
NOM_FICHIER="dartech_cloud_${DATE_DU_JOUR}.sql.gz"
CHEMIN_COMPLET="${DOSSIER_BACKUP_LOCAL}/${NOM_FICHIER}"

LOG_FILE="/var/log/dartech-backup.log"

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}

# --- 1. Créer le dossier local si besoin ---
mkdir -p "$DOSSIER_BACKUP_LOCAL"

# --- 2. Dump + compression de la base ---
log "Début du backup de la base $DB_NAME"

mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$CHEMIN_COMPLET"

if [ $? -ne 0 ]; then
    log "ERREUR: échec du mysqldump"
    exit 1
fi

TAILLE=$(du -h "$CHEMIN_COMPLET" | cut -f1)
log "Dump créé avec succès: $NOM_FICHIER ($TAILLE)"

# --- 3. Envoi vers Wasabi via rclone ---
rclone copy "$CHEMIN_COMPLET" "${RCLONE_REMOTE}:${RCLONE_BUCKET_PATH}/" --quiet

if [ $? -ne 0 ]; then
    log "ERREUR: échec de l'envoi vers Wasabi"
    exit 1
fi

log "Backup envoyé vers Wasabi avec succès"

# --- 4. Nettoyage des anciens backups locaux (rétention) ---
find "$DOSSIER_BACKUP_LOCAL" -name "dartech_cloud_*.sql.gz" -mtime +${JOURS_RETENTION} -delete
log "Nettoyage des backups locaux de plus de ${JOURS_RETENTION} jours effectué"

# --- 5. Nettoyage des anciens backups sur Wasabi (même rétention) ---
rclone delete "${RCLONE_REMOTE}:${RCLONE_BUCKET_PATH}/" --min-age "${JOURS_RETENTION}d" --quiet

log "Nettoyage des backups Wasabi de plus de ${JOURS_RETENTION} jours effectué"
log "Backup terminé avec succès"
log "----------------------------------------"

exit 0
