#!/usr/bin/env bash set -euo pipefail APP_NAME="webval" DST_DIR="/var/www/mathematiques" BACKUP_ROOT="/var/backups/${APP_NAME}" die() { echo "ERREUR: $*" >&2; exit 1; } [[ -d "${DST_DIR}" ]] || die "Destination inexistante: ${DST_DIR}" [[ -d "${BACKUP_ROOT}" ]] || die "Aucun backup trouvé: ${BACKUP_ROOT}" # Trouver le backup le plus récent (ordre lexicographique OK grâce au timestamp) LAST_BACKUP="$(ls -1d "${BACKUP_ROOT}"/prev_* 2>/dev/null | sort | tail -n 1 || true)" [[ -n "${LAST_BACKUP}" && -d "${LAST_BACKUP}" ]] || die "Aucun dossier prev_* valide dans ${BACKUP_ROOT}" echo "=== ROLLBACK MANUEL (${APP_NAME}) ===" echo "Restore depuis : ${LAST_BACKUP}" echo "Vers : ${DST_DIR}" echo read -r -p "Confirmer le rollback ? (oui/non) " ans [[ "${ans}" == "oui" ]] || { echo "Annulé."; exit 0; } sudo rsync -a --delete "${LAST_BACKUP}/" "${DST_DIR}/" # Reload services (sans faire échouer si un service n'existe pas) sudo systemctl reload php8.1-fpm >/dev/null 2>&1 || true sudo systemctl reload nginx >/dev/null 2>&1 || true echo "OK: rollback terminé." echo "Logs utiles si besoin :" echo " sudo tail -n 80 /var/log/nginx/error.log" echo " sudo journalctl -u php8.1-fpm -n 80 --no-pager"