fix(backup): dump-explosie voorkomen, detecteren en minder lang bewaren #132
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
janpeter/Ops-dashboard!132
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/backup-dump-size-and-retention"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
De aanleiding
Tussen 2026-07-24 en 07-31 sprong de dagelijkse forgejo-dump van 0,2 naar 8,3 GB — acht dagen, ~64 GB. Oorzaak: zes container-images (
video-editor-*) in Forgejo's package-registry, gepusht 07-23 12:29 t/m 07-25 02:06. 271 blobs, waarvan 24 lagen groter dan 100 MB (samen 7,34 GB).forgejo dumparchiveertdata/packagesmee, dus elke dagelijkse dump sleepte ze opnieuw mee.Ze zijn tussen de dumps van 07-31 en 08-01 verwijderd; de registry is nu leeg. Niemand merkte het, en het kwam twaalf dagen later bij toeval boven bij een backup-coverage-vraag.
Vier wijzigingen
--skip-package-data --skip-index --skip-repo-archiveskeep-monthly12 -> 31 — voorkomen
De registry bevat build-artefacten die CI opnieuw maakt, geen autoritatieve staat. Index en repo-archives zijn regenereerbaar. Getest met de echte vlaggen:
2 — detecteren
Retrospectief getoetst tegen de echte dumps:
Bewust een waarschuwing en geen fout: de backup weigeren omdat de dump groot is offert de backup zelf op.
Beperking, expliciet: deze regel is alleen zichtbaar in het backup-log.
PHASE_EXTRAbereikt het statusbestand niet omdatrun_phasefasen in een subshell draait (( ... ) 2>&1 | tee) — bestaande bug, hier bewust niet meegefixt omdat die het status-contract en de hardcoded fase-lijst van het dashboard raakt.3 — lokale retentie
Elke restic-snapshot bevat de dumps die op dat moment lokaal staan. De snapshot van 08-02 droeg nog acht 8GB-zips mee. Bij 3 dagen zakt de map van 64,2 naar 9,0 GB (en daarna naar ~0,7 GB zodra de zip van 31-07 verloopt).
4 — restic-retentie
--keep-daily 7 --keep-weekly 4blijven staan: met lokaal op 3 dagen zijn de dagelijkse snapshots de primaire staart, en elke snapshot draagt 3 dagen dumps — dus elke dump van de afgelopen ~9 dagen is bereikbaar.Alleen NAS. B2 heeft Object Lock (governance, 30 dagen) en de server-key heeft geen
deleteFiles; prune draait daar maandelijks vanaf de laptop. Zonder dezelfde aanpassing daar lopen de policies uit elkaar.Wat er vannacht gebeurt
De eerstvolgende run (03:36) maakt een dump zonder packages, snoeit lokaal naar 3 dagen (~55 GB vrij) en draait
forget --prunemet de nieuwe monthly. Die prune gaat over CIFS — reken op een tragere run dan normaal.APPROVED
Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.
Findings
Review
De wijziging in
deploy/server-backup/server-backup.shis beperkt en operationeel coherent: lokale Forgejo-dumps worden korter bewaard, regenerabele Forgejo-data wordt standaard uit de dump gehouden met een duidelijke override, afwijkende dumpgroottes worden alleen gelogd als waarschuwing, en restic-retentie wordt minder zwaar gemaakt. Ik heb geen productdoc gevonden die hiermee conflicteert.Let op als niet-blokkerend rest-risico:
DUMP_SIZE_WARN_FACTORwordt in bash-arithmetic gebruikt en verwacht dus een integerwaarde; dat past bij de bestaande env-configstijl, maar een ongeldige override kan de warning-check laten falen na het schrijven van de dump.