feat(PROJ-66): CLI-Kommandos archivmail backup/restore

Sichert Store (Hardlinks erhalten, PROJ-65-tauglich ohne Abhängigkeit von
rsync -H), Keyfile, config.yml und PostgreSQL (pg_dump -Fc) konsistent in
ein Zielverzeichnis. Rotation läuft nur nach erfolgreichem Lauf, ein
fehlgeschlagener Backup rotiert nie ein gutes altes Backup weg.

restore ist bewusst konservativ: bricht bei nicht-leerem Store/Keyfile ohne
-force ab, stoppt/startet den Dienst nicht selbst, gibt am Ende die
Pflicht-Verifikationsschritte (reconcile, reindex, Stichprobe) aus.

Ergänzt die vorhandene PBS+Sync-Infrastruktur um einen App-eigenen,
selektiven Restore-Weg. Kein automatischer Cron-Eintrag aktiv (Zielpfad
noch offen), nur als Vorlage in deploy/cron.d/archivmail auskommentiert.
Kein lokaler go build möglich, QA folgt auf Testserver.
This commit is contained in:
sysops
2026-07-04 14:09:37 +02:00
parent ebab716006
commit f3a7dea3cc
7 changed files with 428 additions and 4 deletions
+11
View File
@@ -72,5 +72,16 @@
# 04:10 Uhr, also nach Purge (03:40) und außerhalb der OCR-Pause.
10 4 * * * root /opt/archivmail/archivmail reconcile --config /etc/archivmail/config.yml >> /var/log/archivmail/reconcile.log 2>&1
# ── App-Backup (PROJ-66, optional — Ergänzung zur PBS-/Snapshot-Sicherung) ──
# `archivmail backup` sichert Store (Hardlinks erhalten), Keyfile, Config und
# PostgreSQL-Dump konsistent in ein Zielverzeichnis. Standardmäßig NICHT
# aktiviert — auskommentiert lassen, bis ein konkretes -dest-Ziel (idealerweise
# ein von diesem Host getrenntes Mount, z.B. NFS/rsync-Ziel) feststeht, siehe
# features/PROJ-66-backup-strategie.md. -keep begrenzt die Anzahl vorgehaltener
# Backup-Verzeichnisse (Rotation läuft nur nach einem erfolgreichen Lauf, ein
# fehlgeschlagener Backup löscht nie ein älteres gutes Backup).
#
# 0 3 * * * root /opt/archivmail/archivmail backup --config /etc/archivmail/config.yml --dest /mnt/backup/archivmail --keep 14 >> /var/log/archivmail/backup.log 2>&1
# ── Weitere Jobs (geplant, noch nicht implementiert) ────────────────────
# 30 2 * * * archivmail /opt/archivmail/archivmail reindex # nächtlicher Voll-Reindex