Behebt 3 von 4 Backup-Luecken (Schicht 1, lokal): - backup.sh sichert jetzt den ECHTEN Zustand als ein Tarball mc2-state-<ts>.tar.gz: mem0 (Chroma+history.db), ~/.hermes (config.yaml, .env, plugins/), llama-swap config. Vorher wurde nur die alte/leere mc2-memory.db gesichert. chmod 600 (enthaelt .env). - restore.sh: --list / --dry-run / [--yes] <datei|latest>; macht VOR dem Zurueckspielen ein Sicherheits-Backup, stoppt/startet Dienste, Health-Check. Live round-trip verifiziert. - mc2-backup.timer/.service: taegliches Backup ~03:30 (vorher gab es KEINE Automatik). - backend/services/backup.py delegiert an backup.sh (eine Quelle der Wahrheit); UI-Button + /api/system/backups zeigen die Tarballs. - docs/BACKUP.md: Backup/Restore-Anleitung. Offen (Schicht 2): Off-Box-Spiegel (Box ist Bare Metal -> PBS-Client oder rsync in LXC). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.3 KiB
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.
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-clientODER rsync in einen vzdump-gesicherten LXC. Noch nicht eingerichtet.