Files
certain/docs/BACKUP.md
T
GuidoandClaude Opus 4.8 f375fc5eaa feat: Backup/Export + Import-UX klarer + Raiffeisen-Preset-Fix
Backup & Export:
- routers/backup: /backup/db (Admin, konsistentes SQLite-Online-Backup),
  /export/transactions.csv|json und /export/all.json (owner-gescoped).
- Einstellungen: Bereich „Backup & Export" mit Download-Buttons. docs/BACKUP.md
  (Wiederherstellung + LXC-Sicherung). pytest für Export + Admin-Schutz.

Import-Verbesserungen (Nutzer-Feedback zum Ablauf):
- Klarer Hinweis, dass die Zuordnungstabelle nur Beispielzeilen zeigt und
  „Vorschau erstellen" die vollständige Prüfliste + Buchen-Button erzeugt.
- Zusammenfassung (erkannt/gebucht) und Warnung, wenn keine gültige Zeile erkannt
  wurde (Hinweis auf Format/Bank-Vorlage).
- Fix: Raiffeisen-Preset hat has_header=true (der Export hat eine Kopfzeile).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-19 20:35:02 +02:00

1.6 KiB

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:

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:
# /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.