#!/bin/bash
# Auteur : BENE Maël
# Version : 1.1
# Description : Sauvegarde différentielle avec temps d'execution dans les logs

#!/bin/bash
set -euo pipefail

# Configuration
DOSSIER="MACHINES"
SOURCE_DIR="$HOME/mairie/$DOSSIER"
DEST_USER="backup-user"
DEST_HOST="stockage"
DEST_PATH="/home/$DEST_USER/backup/$DOSSIER"
LOG_DIR="$HOME/backup-logs"
DATE="$(date '+%Y-%m-%d_%H-%M-%S')"
CUMULATIVE_LOG="$LOG_DIR/sauvegardes_dif.log"

mkdir -p "$LOG_DIR"

start=0
rsync_started=false

# Fonction exécutée même en cas de plantage ou d'interruption
on_exit() {
    if $rsync_started; then
        local end=$(date +%s)
        local duration=$((end - start))
        echo "[$(date '+%F %T')] ➤ Durée de la sauvegarde : ${duration} secondes" >> "$CUMULATIVE_LOG"
    fi
}
trap on_exit EXIT

# Log de début
{
    echo "====================================================="
    echo "[$(date '+%F %T')] ➤ DÉBUT DE LA SAUVEGARDE DIFFÉRENTIELLE"
    echo "Dossier      : $DOSSIER"
    echo "Source       : $SOURCE_DIR"
    echo "Destination  : $DEST_USER@$DEST_HOST:$DEST_PATH"
    echo "Horodatage   : $DATE"
    echo "====================================================="
} >> "$CUMULATIVE_LOG"

# Préparation du dossier distant
echo "[$(date '+%F %T')] ➤ Vérification du dossier distant..." >> "$CUMULATIVE_LOG"
ssh "$DEST_USER@$DEST_HOST" "mkdir -p '$DEST_PATH'" >> "$CUMULATIVE_LOG" 2>&1
echo "[$(date '+%F %T')] ➤ Dossier distant prêt." >> "$CUMULATIVE_LOG"

# Mesure du temps
start=$(date +%s)
rsync_started=true

# Lancement de rsync
echo "[$(date '+%F %T')] ➤ Lancement de rsync..." >> "$CUMULATIVE_LOG"
rsync -av --inplace --partial --append -e ssh "$SOURCE_DIR/" "$DEST_USER@$DEST_HOST:$DEST_PATH/" \
    >> "$CUMULATIVE_LOG" 2>&1

# Si rsync a terminé normalement, on continue le log
echo "[$(date '+%F %T')] SAUVEGARDE DIFFÉRENTIELLE TERMINÉE" >> "$CUMULATIVE_LOG"
echo >> "$CUMULATIVE_LOG"
