#!/bin/bash
# ============================================
# DarTech Cloud - Backup code + configurations serveur
# A exécuter hebdomadairement via cron sur le VPS
# Sauvegarde: code du portail, configs vsftpd, scripts maison
# ============================================

DOSSIER_BACKUP_LOCAL="/root/backups-dartech-cloud/code-config"
RCLONE_REMOTE="wasabi2"
RCLONE_BUCKET_PATH="dartech-backup-test/system-backups/code-config"

JOURS_RETENTION=60    # garder plus longtemps que les backups DB (changent moins souvent)

DATE_DU_JOUR=$(date +%Y%m%d)
NOM_ARCHIVE="dartech_code_config_${DATE_DU_JOUR}.tar.gz"
CHEMIN_COMPLET="${DOSSIER_BACKUP_LOCAL}/${NOM_ARCHIVE}"

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

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

mkdir -p "$DOSSIER_BACKUP_LOCAL"

# --- Liste des dossiers/fichiers à sauvegarder (adapter selon ton arborescence réelle) ---
log "Début du backup code + config"

tar -czf "$CHEMIN_COMPLET" \
    /var/www/dartech-cloud \
    /etc/vsftpd.conf \
    /etc/vsftpd \
    /root/nouveau-client.sh \
    2>> "$LOG_FILE"

if [ $? -ne 0 ]; then
    log "ATTENTION: certains chemins n'existent peut-être pas, vérifier le warning ci-dessus (non bloquant si tar a quand même produit une archive)"
fi

if [ ! -f "$CHEMIN_COMPLET" ]; then
    log "ERREUR: l'archive n'a pas été créée"
    exit 1
fi

TAILLE=$(du -h "$CHEMIN_COMPLET" | cut -f1)
log "Archive créée: $NOM_ARCHIVE ($TAILLE)"

# --- Envoi vers Wasabi ---
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 code/config envoyé vers Wasabi avec succès"

# --- Nettoyage rétention ---
find "$DOSSIER_BACKUP_LOCAL" -name "dartech_code_config_*.tar.gz" -mtime +${JOURS_RETENTION} -delete
rclone delete "${RCLONE_REMOTE}:${RCLONE_BUCKET_PATH}/" --min-age "${JOURS_RETENTION}d" --quiet

log "Backup code/config terminé avec succès"
log "----------------------------------------"

exit 0
