diff --git a/rollback_last.sh b/rollback_last.sh new file mode 100755 index 0000000..ab24d3f --- /dev/null +++ b/rollback_last.sh @@ -0,0 +1,34 @@ +#!/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"