Co je Restic?
Restic je open-source zálohovací program distribuovaný pod licencí BSD 2-Clause, který byl vytvořen Alexandrem Neumannem a poprvé představen v roce 2015. Od té doby se Restic stal jedním z nejpopulárnějších nástrojů pro zálohy v open-source komunitě, s více než 25 000 hvězdičkami na GitHubu a aktivní komunitou přispěvatelů z celého světa.
Restic je napsaný v programovacím jazyce Go, což přináší řadu praktických výhod. Kompiluje se do jediného staticky linkovaného binárního souboru bez externích závislostí, což značně zjednodušuje instalaci a nasazení. Stačí stáhnout jeden soubor, učinit jej spustitelným, a máte plně funkční zálohovací nástroj. Žádné knihovny, žádné runtime prostředí, žádné komplexní závislosti.
Filozofie Restic je jednoduchá: každá záloha je snapshot (snímek) celého zálohovaného adresáře v daném okamžiku. Na rozdíl od tradičních zálohovacích nástrojů, které rozlišují mezi plnými a přírůstkovými zálohami, Restic toto rozlišení nepotřebuje. Díky content-defined chunking (dělení obsahu na bloky na základě obsahu) a globální deduplikaci automaticky ukládá pouze nové nebo změněné datové bloky. Výsledkem je, že každý snapshot je „plnou zálohou" z pohledu obnovení, ale zabírá jen zlomek místa díky sdílení datových bloků s předchozími snapshoty.
Jak Restic funguje?
Pochopení interní architektury Restic pomáhá lépe využívat jeho možnosti. Celý systém je postaven na několika klíčových konceptech.
Repozitář (Repository)
Restic ukládá všechna data do repozitáře – strukturovaného adresáře, který obsahuje zašifrované datové bloky, indexy a metadata. Repozitář lze vytvořit na lokálním disku, vzdáleném serveru přes SFTP, v cloudovém úložišti (S3, B2, Azure, GCP) nebo prostřednictvím rclone prakticky kdekoli. Repozitář je chráněn heslem, které slouží jako základ pro odvození šifrovacích klíčů.
Content-Defined Chunking (CDC)
CDC je technika, která dělí soubory na bloky (chunky) nikoliv na základě pevné velikosti, ale na základě obsahu dat. Restic používá algoritmus Rabin fingerprint pro určení hranic bloků. To znamená, že pokud na začátek souboru přidáte data, změní se pouze dotčené bloky – zbytek souboru bude rozdělen na stejné bloky jako předtím. Tato vlastnost je klíčová pro efektivní deduplikaci, protože umožňuje detekovat duplicitní data i v případě, že se soubory liší pouze částečně.
Bloky mají typickou velikost mezi 512 KB a 8 MB, přičemž průměrná velikost je přibližně 1 MB. Tato granularita poskytuje dobrý kompromis mezi efektivitou deduplikace (menší bloky = lepší deduplikace) a režií na správu metadat (větší bloky = méně metadat).
Snapshoty
Každé spuštění příkazu restic backup vytvoří nový snapshot – úplný záznam zálohovaného adresáře v daném okamžiku. Snapshot obsahuje metadata (datum vytvoření, hostname, cesty, tagy) a odkaz na stromovou strukturu souborů. Díky deduplikaci sdílejí snapshoty datové bloky, takže i stovky snapshotů zabírají jen o málo více místa než jediný.
Snapshoty lze procházet, porovnávat (pomocí restic diff), připojit jako souborový systém (pomocí restic mount) nebo obnovit (pomocí restic restore). Starší snapshoty lze mazat pomocí restic forget s různými politikami retence (uchování posledních N snapshotů, snapshotů za posledních N dní/týdnů/měsíců/let).
Šifrování
Restic šifruje všechna data i metadata pomocí AES-256-CTR a ověřuje integritu pomocí Poly1305 MAC. Šifrovací klíče jsou odvozeny z hesla uživatele pomocí scrypt (key derivation function). Toto šifrování je ve výchozím nastavení a nelze jej vypnout – Restic prostě vždy šifruje. To znamená, že vaše data jsou v bezpečí i v případě, že útočník získá přístup k úložišti (ať už jde o cloudový provider, správce serveru nebo fyzický disk).
Podporované backendy
Jednou z největších silných stránek Restic je široká podpora různých úložišť. Data můžete zálohovat prakticky kamkoli:
-
📁
Lokální disk – interní nebo externí disk, USB flash disk, síťový disk
-
🔒
SFTP – jakýkoli server s SSH přístupem (VPS, NAS, vlastní server)
-
☁️
Amazon S3 – včetně S3-kompatibilních služeb (MinIO, Wasabi)
-
💾
Backblaze B2 – cenově nejdostupnější cloudové úložiště
-
🔷
Microsoft Azure Blob – enterprise cloudové úložiště
-
🌐
Google Cloud Storage – GCP objektové úložiště
-
🖥️
REST server – vlastní HTTP server optimalizovaný pro Restic
-
🔗
rclone – prostřednictvím rclone přístup k 70+ cloudovým službám
Pro koho je Restic vhodný?
Systémoví administrátoři
Restic je ideální pro zálohy serverů a infrastruktury. Jediný binární soubor, skriptovatelné CLI, podpora systemd timerů a cron úloh. Efektivní deduplikace šetří místo na úložišti, šifrování zajišťuje bezpečnost dat i na vzdálených úložištích.
Vývojáři a power users
Pokud preferujete příkazový řádek a chcete plnou kontrolu nad zálohami, Restic je pravděpodobně ten nejlepší nástroj. Flexibilní exclude patterns, tagy, FUSE mount pro procházení záloh a snadná integrace do CI/CD pipeline.
Domácí homelabisté
Pro uživatele s vlastním NAS nebo domácím serverem je Restic perfektní volbou. Zálohujte data z více počítačů na centrální NAS a zároveň je odešlete do cloudu (B2, Wasabi) jako offsite zálohu. Pravidlo 3-2-1 snadno a levně.
Uživatelé Linuxu
Restic je nativní pro Linux a je dostupný ve většině distribučních repozitářů. Na rozdíl od komerčních zálohovacích řešení, která Linux často ignorují, Restic na Linuxu funguje prvotřídně a je aktivně vyvíjen a testován na této platformě.
Design a architektura
Restic byl od začátku navržen s důrazem na bezpečnost, jednoduchost a spolehlivost. Autor Alexander Neumann se inspiroval existujícími nástroji jako BorgBackup (dříve Attic) a duplicity, ale rozhodl se vytvořit nový nástroj od základů s moderním jazykem Go a lépe promyšlenou architekturou.
Klíčovým designovým rozhodnutím je, že Restic nerozlišuje mezi plnými a přírůstkovými zálohami. Každý snapshot je technicky plná záloha, ale díky deduplikaci na úrovni datových bloků zabírá pouze tolik prostoru, kolik odpovídá skutečně novým nebo změněným datům. To eliminuje problémy tradičních zálohovacích schémat, kde ztráta plné zálohy znamená nemožnost obnovit přírůstkové zálohy, které na ní závisí.
Formát repozitáře je dobře zdokumentovaný a stabilní, což znamená, že i v případě, že by projekt Restic přestal existovat, by bylo teoreticky možné data obnovit pomocí vlastní implementace. To je důležitý faktor pro dlouhodobou archivaci dat.
Komunita a vývoj
Restic má aktivní a přátelskou komunitu. Vývoj probíhá otevřeně na GitHubu, kde se pravidelně vydávají nové verze s vylepšeními a opravami. Komunita přispívá nejen kódem, ale i dokumentací, návody a integrací s dalšími nástroji. Diskuze probíhají na fóru Discourse a v GitHub Issues.
Projekt se řídí konzervativním přístupem k novým funkcím – důraz je kladen na stabilitu, spolehlivost a zpětnou kompatibilitu formátu repozitáře. To je důležité pro nástroj, kterému svěřujete svá data.