Steuerkram/data/README.md

41 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# data/ – persistente Nutzdaten
Alles in diesem Verzeichnis ist **Nutzdatenbestand**, nicht Code. Es überlebt
Updates, `git pull`, `git clean` und Container-Neubauten und gehört in die
Datensicherung. Der Inhalt ist per `.gitignore` (`data/*`) vom Repo ausgenommen –
nur diese README ist eingecheckt.
| Verzeichnis | Inhalt | Gemountet in |
|---|---|---|
| `data/mariadb/` | Datenbank (MariaDB-Datendateien) | nur `db`-Container: `/var/lib/mysql` |
| `data/belege/` | Hochgeladene Belegdateien, nach Jahr/Belegnummer | `web`: `/var/www/html/data/belege` |
| `data/logo/` | Firmenlogo (`logo.png` oder `logo.jpg`) | `web`: `/var/www/html/data/logo` |
## Warum außerhalb des Web-Roots
`data/belege` und `data/logo` liegen bewusst **nicht** unter `public/`. Beide
werden ausschließlich über die Anwendung ausgeliefert, die vorher Anmeldung und
Dateityp prüft:
- Belege über `/belege/{id}/file` (`BelegController::serveFile`)
- Logo über `/settings/logo/file` (`SettingsController::serveLogo`)
Ein direkter Abruf per URL ist damit nicht möglich. In der Datenbank steht jeweils
nur der Pfad **relativ** zum zugehörigen Verzeichnis (`belege.storage_path`,
`company_settings.logo_path`) – kein Web-Pfad und kein absoluter Serverpfad.
Der `web`-Container sieht `data/mariadb` nicht; die Datenbankdateien sind
ausschließlich in den `db`-Container gemountet.
## Datensicherung
```bash
# Datenbank
docker compose exec -T db mariadb-dump -usteuerkram -psteuerkram steuerkram > backup.sql
# Dateien
tar czf backup-dateien.tar.gz data/belege data/logo
```
Ein Backup ist nur zusammen vollständig: Ohne `data/belege` verweisen die
Beleg-Datensätze der Datenbank ins Leere.