# Backup & Wiederherstellung ## In der App **Einstellungen → Backup & Export:** - **Buchungen (CSV/JSON)** und **Alle Daten (JSON)** — exportiert die *eigenen* Daten des angemeldeten Nutzers (owner-gescoped) zum Archivieren/Weiterverarbeiten. - **Komplettes DB-Backup** (nur Admin) — lädt eine konsistente Kopie der gesamten SQLite-Datenbank herunter (alle Nutzer). Erzeugt über die SQLite-Online-Backup-API, also auch bei laufendem Betrieb gefahrlos. ## Wiederherstellen (DB-Backup) Die heruntergeladene `.db`-Datei ist die komplette Datenbank. Zum Wiederherstellen im LXC: ```bash systemctl stop certain-finance cp certain-finance-YYYYMMDD-HHMMSS.db /var/lib/certain-finance/app.db # WAL-/SHM-Reste entfernen, damit die Kopie sauber übernommen wird: rm -f /var/lib/certain-finance/app.db-wal /var/lib/certain-finance/app.db-shm chown certain-finance:certain-finance /var/lib/certain-finance/app.db 2>/dev/null || true systemctl start certain-finance ``` ## Datei-Backup (LXC) Die Datenbank liegt unter `/var/lib/certain-finance/app.db`. - **Proxmox-Snapshot:** `vzdump` des Containers sichert alles (empfohlen). - **Cron-Kopie:** täglich eine konsistente Kopie ablegen und rotieren: ```bash # /etc/cron.daily/certain-finance-backup (ausführbar machen) #!/bin/sh D=/var/lib/certain-finance mkdir -p "$D/backups" sqlite3 "$D/app.db" ".backup '$D/backups/app-$(date +\%Y\%m\%d).db'" # älter als 30 Tage löschen find "$D/backups" -name 'app-*.db' -mtime +30 -delete ``` `update.sh` legt außerdem vor jeder Migration automatisch eine Kopie unter `/var/lib/certain-finance/backups/pre-update-*.db` an.