# NEXARCH Archive Zentrales, modulübergreifendes Modul für Aufbewahrung, WORM, Compliance und Backup. Dieses Verzeichnis enthält bisher `internal/backup` (BAK-01, Datenbank-Backup-Strategie) — weitere Bausteine folgen ticketweise. ## BAK-01: Datenbank-Backup `cmd/backup-cli` — Aufrufpunkt für systemd-Timer (siehe `../deploy/systemd/nexarch-archive-backup-*.timer`): ```bash export NEXARCH_BACKUP_PG_USER=nexarch_backup export NEXARCH_BACKUP_PG_PASSWORD=... export NEXARCH_BACKUP_DIR=/var/nexarch-archiv/backups/postgres # NICHT auf einem ephemeren Test-Dataset (siehe Betrieb) export NEXARCH_BACKUP_KEEP_GENERATIONS=7 # optional, Default 7 backup-cli full # neue Vollsicherung + Verifikation backup-cli incremental # inkrementelle Sicherung gegen die neueste Generation backup-cli rotate # entfernt alle bis auf die neuesten N Generationen ``` Voraussetzung: die konfigurierte Postgres-Rolle braucht das `REPLICATION`-Attribut (`pg_basebackup` nutzt eine Replikationsverbindung), und `summarize_wal = on` muss serverseitig gesetzt sein (PostgreSQL 17s natives inkrementelles Backup, keine WAL-Archivierung nötig). ## BAK-02: Objekt-Storage-Backup `cmd/objectbackup-cli` sichert einen lokalen Verzeichnisbaum (den FDN-03-`LocalDriver`-Basisordner direkt, oder — für S3-gestützte Deployments — einen vorgelagerten `rclone`-Spiegel) mit [restic](https://restic.net) (Content-defined Chunking, verschlüsseltes Repository, geprüftes Tooling statt Eigenbau): ```bash export NEXARCH_OBJECTBACKUP_REPO_DIR=/var/nexarch-archiv/backups/objects export NEXARCH_OBJECTBACKUP_PASSWORD=... export NEXARCH_OBJECTBACKUP_KEEP_SNAPSHOTS=30 # optional, Default 7 objectbackup-cli backup /var/nexarch-objects # Sicherung + Verifikation objectbackup-cli check # vollständiges Lesen aller Datenblöcke objectbackup-cli rotate # restic forget --keep-last N --prune ``` ## Betrieb: Backup-Zielverzeichnis Backup-Ziele liegen unter `/var/nexarch-archiv/` (persistentes ZFS-Dataset, `zfs/data/subvol-1131-disk-0` auf 192.168.1.131), NIEMALS unter `/var/nexarch-test/` (ephemeres Dataset, wird von den `reset-test-env.sh`- Skripten der anderen Module geleert). ZFS-seitige Snapshots/Replikation dieses Datasets sind ein eigenständiges Infra-Runbook (siehe `../../STORAGE-KONZEPT.md` Abschnitt 7), kein Ticket-Code — `zfs dedup=on` bewusst NICHT setzen (hoher RAM-Bedarf), Deduplizierung läuft ausschließlich App-seitig über restic. ## Prüfungen ```bash make check # build + vet + lint + test, analog Core/DMS ```