# Ripristino Backup PowerUp

Queste istruzioni servono per ripristinare un backup creato con lo script:

```bash
/var/www/html/backup
```

I backup vengono salvati in:

```bash
/var/www/powerup-backups/
```

Ogni backup contiene codice, configurazioni locali, dump SQL dei database e dati persistenti condivisi. La cartella di backup puo' contenere `.env`, token API, segreti WhatsApp e dati clienti: va tenuta privata e non va caricata su GitHub.

## 1. Scegliere Il Backup

Elenca i backup disponibili:

```bash
ls -lah /var/www/powerup-backups
```

Imposta il backup da ripristinare:

```bash
BACKUP_DIR=/var/www/powerup-backups/20260425T141906Z
```

Controlla che i file non siano corrotti:

```bash
cd "$BACKUP_DIR"
sha256sum -c SHA256SUMS
```

Deve risultare tutto `OK`.

## 2. Ripristinare I File Dell'App

Sposta la versione attuale senza cancellarla:

```bash
cd /var/www
mv html "html_broken_$(date -u +%Y%m%dT%H%M%SZ)"
```

Estrai il backup dei file:

```bash
tar -xzf "$BACKUP_DIR/app-files.tar.gz" -C /var/www
cd /var/www/html
```

Non avviare ancora tutta l'app se devi ripristinare anche i database. Procedi prima con il punto successivo.

## 3. Ripristinare I Database SQL

Avvia solo i database:

```bash
cd /var/www/html
docker compose up -d prenotazioni-db ordini-db
```

Ripristina il database Prenotazioni:

```bash
gzip -dc "$BACKUP_DIR/prenotazioni-db.sql.gz" | \
  docker compose exec -T prenotazioni-db sh -c 'psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -d "$POSTGRES_DB"'
```

Ripristina il database Ordini:

```bash
gzip -dc "$BACKUP_DIR/ordini-db.sql.gz" | \
  docker compose exec -T ordini-db sh -c 'psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -d "$POSTGRES_DB"'
```

## 4. Ripristinare Il Volume Dati Condiviso

Avvia `backend-hub`, poi ripristina il contenuto di `/data`:

```bash
docker compose up -d backend-hub
gzip -dc "$BACKUP_DIR/backend-hub-state-data.tar.gz" | \
  docker compose exec -T backend-hub sh -c 'cd /data && tar -xpf -'
```

## 5. Riavvio Finale

Riavvia tutto:

```bash
docker compose up -d --build
```

Controlla lo stato:

```bash
docker compose ps
```

Controlla i log principali:

```bash
docker compose logs --tail=80 backend-hub
docker compose logs --tail=80 prenotazioni-backend
docker compose logs --tail=80 ordini-backend
```

## 6. Se Il Ripristino Fallisce

La cartella precedente non viene cancellata, ma rinominata in `html_broken_DATA`. Per tornare indietro:

```bash
cd /var/www
mv html "html_restore_failed_$(date -u +%Y%m%dT%H%M%SZ)"
mv html_broken_DATA html
cd /var/www/html
docker compose up -d --build
```

Sostituisci `html_broken_DATA` con il nome reale della cartella creata al punto 2.
