# Backup & Restore

Sichert den **nicht wiederherstellbaren Zustand** der AI-Box. Code kommt aus Git,
Modelle sind neu ladbar — gesichert wird nur, was sonst weg wäre.

## Was im Backup ist
- **Gedächtnis:** `/srv/models/mem0/` (Chroma-Vektoren + `history.db`)
- **Hermes:** `~/.hermes/config.yaml`, `~/.hermes/.env` (**Secrets!**), `~/.hermes/plugins/`
- **Engine:** `/etc/llama-swap/config.yaml`

Nicht enthalten (bewusst): GGUF-Modelle, MC2-Code (Git), venvs, systemd-Units (aus `deploy.sh`).

Jedes Backup ist ein Tarball `mc2-state-<zeitstempel>.tar.gz` unter `/srv/models/mc2-backups/`,
`chmod 600` (enthält `.env`). Es werden die letzten **14** behalten.

> ⚠️ Das Tarball enthält Secrets und liegt aktuell auf **derselben Platte** wie die Daten.
> Für echten Desaster-Schutz noch eine Off-Box-Kopie einrichten (PBS / rsync). Siehe „Offen".

## Backup erstellen
- **Automatisch:** systemd-Timer `mc2-backup.timer`, täglich ~03:30. Status:
  `systemctl --user list-timers mc2-backup.timer`
- **Manuell (Box):** `bash ~/mission-control-v2/deploy/backup.sh`
- **UI:** Wartungs-Drawer → „Snapshot erstellen"

## Wiederherstellen (Restore)
Restore läuft **nur per CLI auf der Box** (bewusst — er stoppt Dienste und überschreibt Configs).
Vor dem Zurückspielen macht das Skript automatisch ein Sicherheits-Backup des aktuellen Zustands.

```bash
cd ~/mission-control-v2
bash deploy/restore.sh --list                 # vorhandene Backups anzeigen
bash deploy/restore.sh --dry-run latest       # zeigen, was passieren würde
bash deploy/restore.sh latest                 # neuestes wiederherstellen (mit Rückfrage)
bash deploy/restore.sh mc2-state-YYYYMMDD-HHMMSS.tar.gz   # bestimmtes Backup
```

Ablauf: Sicherheits-Backup → Dienste stoppen (`mem0-service`, `mission-control-2`,
`hermes-gateway`) → Dateien zurückspielen (mem0 wird **ersetzt**, Configs überschrieben) →
Dienste starten → Health-Check.

Ein Backup von einer **anderen** Maschine zurückspielen: Tarball nach
`/srv/models/mc2-backups/` kopieren, dann `restore.sh <datei>`.

## Offen / TODO
- **Off-Box-Spiegel** (Schicht 2): Box ist Bare Metal (kein Proxmox-Gast → kein vzdump).
  Saubere Wege: Proxmox Backup Server + `proxmox-backup-client` ODER rsync in einen
  vzdump-gesicherten LXC. Noch nicht eingerichtet.
