35 lines
1.2 KiB
Bash
Executable File
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"
|