← EP21 Internal Docs EP21 Backup Engine
ADR · ADR-0013 · v1.0.0

Backup Storage Tool — Restic

accepted v1.0.0 Authors: david.sorf Created: 2026-04-10 Updated: 2026-04-10
restic storage dedup encryption architecture s3
EP21 Backup Agent používá restic jako backup storage engine. Restic poskytuje blokovou deduplikaci (content-defined chunking), nativní AES-256 šifrování a přímou podporu S3 backendu (Contabo Object Storage). Alternativy borg a tar/zip/gpg byly zvažovány a zamítnuty.
Related docs:
Related tasks:

Kontext

EP21 Backup Agent spouští denní pg_dump na PostgreSQL databáze a výstupy ukládá lokálně i do remote object storage (Contabo S3). Klíčové požadavky na storage vrstvu:

Kontext diskuse s infra týmem

Infra tým diskutoval, zda by DB dumpy měly být komprimovány přes zip nebo tar před uložením. Argument pro: menší objem přenosu. Argument proti: restic deduplikace pracuje na úrovni bloků — ZIP/TAR by dedup znemožnil (komprimovaný soubor je kryptograficky odlišný i při malé změně vstupních dat).

Rozhodnutí

✓ Chosen: Restic — jako jediný backup storage engine pro lokální i remote (Contabo S3) úložiště

Porovnání alternativ

NástrojDedupEncryptionS3 backendDocker-friendlyZralost
resticblokový CDCAES-256 nativníano (nativní)ano (single binary)vysoká
borgblokový CDCanojen přes rclonehorší (Python dep)vysoká
tar + gpgneruční pipelineručníanolegacy
zipnevolitelnáručníanonevhodný pro backup

Proč restic

Blokový CDC dedup — restic dělí soubory na proměnně velké bloky (512 KB–8 MB, content-defined chunking). Identické bloky se ukládají jen jednou napříč všemi snapshoty. DB dump mění typicky jen malou část dat den za dnem → efektivita dedup 60–90 %.

Proč ne zip/tar před restic — komprese/archivace před restic dedup je kontraproduktivní. Komprimovaný soubor je z pohledu restic zcela jiná sekvence bajtů i při minimální změně vstupních dat → dedup přestane fungovat. restic komprimuje interně volitelně (od v0.14), ale i bez toho dedup výrazně dominuje nad kompresí pro opakující se obsah.

Proč ne borg — borg vyžaduje Python runtime, horší Docker integrace, S3 jen přes rclone wrapper. Pro EP21 scale výhody oproti restic neexistují.

Proč ne tar + gpg — žádná deduplikace, správa šifrování je ruční a chybová, žádný snapshot model, žádné prune, žádný S3. Vhodné pro jednorázové archivy, ne pro denní provoz.

Důsledky

Pozitivní:

Negativní / omezení:

Dopad na ostatní ADR

Changelog

VersionDateAuthorNote
1.0.02026-04-10david.sorf + claude-sonnet-4-6

Vytvořeno a přijato. Kontext: diskuse s infra týmem o zip/tar vs. dedup. Restic potvrzen jako jediný storage engine. Alternativy borg a tar/zip/gpg dokumentovány a zamítnuty.