Files
webval/rollback_last.sh

35 lines
1.2 KiB
Bash
Executable File

#!/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"