Hlavní navigace

Jak na zálohy pomocí Restic

Restic, zálohy Autor: Pexels.com
Přístup k řešení záloh je různý. Existuje řada programů, které dělají zálohy rozdílové, tak i plné. Problém často bývá ve škálovatelnosti a spolehlivosti nástrojů. Dnes bychom chtěli představit nástroj Restic, kterým můžete své zálohy vyřešit jednoduše a spolehlivě.
17. 1. 2022

Sdílet

Co Restic umí

Restic je open source program, který zašifrovaně ukládá data na libovolném úložišti. Může se jednat o S3 a kompatibilní alternativy, DigitalOcean, lokálně nebo dokonce SFTP.

V tomto návodě si ukážeme jak zálohovat soubory na S3 Object Storage alternativě od Linode přes bashový skript.

Nejprve instalace

Instalace Resticu je jednoduchá, má publikovaný vlastní balíček a např. na distribuci Debian jej nainstalujete následovně:

apt-get install restic

Případne můžete přímo z github repozitáře:

git clone https://github.com/restic/resticcd resticgo run build.go

Vytvoření objektového úložiště

Restic potřebuje mít místo, kam bude ukládat data. Můžete samozřejmě zvolit lokální úložiště, ale to by popravdě moc dobré zálohy nebyly. Většinou se tedy zálohy ukládají na nějaké externí úložiště. Nejpopulárnějším je Amazon S3, ale existují i levnější a stejně spolehlivé varianty jako je například Linode, které budeme v našem příkladě používat.

Objektové úložiště (Object Storage) si tedy vytvoříte v rozhraní Linode, případně přímo Amazon S3. Vygenerujete si k němu příslušný přístup a získáte 3 údaje:

  • Access Key
  • Secret Access Key
  • Název úložiště – např. s3:us-east-1.linodeobjects.com/muj-nazev-bucketu

Za pomoci těchto údajů se již dostanete do úložiště, kde můžete spravovat své zálohy.

Inicializace repozitáře

Jako další věc je potřeba založit samotný repozitář, do kterého budete ukládat veškerá data. To se dělá pouze jednou.

Heslo, které zadáváte, se používá pro šifrování přenášených dat. Je tedy třeba i pro následné čtení záloh.

Při každém dotazování na Restic je potřeba nastavit právě tyto základní údaje pro připojení.

export AWS_ACCESS_KEY_ID=nejaky_pris­tupovy_klic

export AWS_SECRET_ACCESS_KEY=neja­ky_tajny_klick

export RESTIC_REPOSITORY=s3:us-east-1.linodeobjects.com/muj-nazev-bucketu

export RESTIC_PASSWORD=123

restic -r $RESTIC_REPOSITORY init

Jdeme na zálohy

Zálohování v Restic má mnoho možností. V naší ukázce používáme nejčastější parametry:

restic -r $RESTIC_REPOSITORY -v backup /var/www/example.com/ –tag “moje_oznaceni” –exclude="/var/www/example.com/log/*”

V ukázce můžeme vidět několik věcí. V první řadě voláme Restic s definovaným repozitářem z předchozího kroku. Tento repozitář můžete a nemusíte v každém příkazu definovat. Restic si ho bere již z exportované proměnné, ale je dobré ho přeci jen specifikovat. Následně definujeme cestu k souborům, které chceme zálohovat. Příjemný bonus je možnost zvolit si vlastní tag, který může být například název hostovaného webu nebo aplikace. A v neposlední řadě vyloučíme ze záloh soubor s logy.

Získávání informací o zálohách

Ke kontrole tvorby záloh můžete použít příkaz:

restic snapshots –tag “moje_oznaceni”

Tímto se vám vrátí kompletní seznam záloh, které si pak můžete libovolně zpracovat.

Promazávání záloh

Jak se zálohy kupí, je potřeba je čas od času promazávat. K tomu není nic jednoduššího, než další cron úloha s následujícím kódem:

restic forget –keep-daily 7 –keep-weekly 4 –keep-monthly 12 –group-by tags

Tímto příkazem odstraníte zálohy s tím, že ponecháte vše za posledních 7 dní, poslední 4 týdny jednu a za posledních 12 měsíců vždy jednu zálohu. Následně je potřeba zavolat příkaz, který fakticky data z úložiště smaže.

restic prune

Nyní máte zálohy pročištěné.

Obnova záloh

Stala tragédie a máte po souborech! Naštěstí jste se na tento případ připravili a zálohy máte k dispozici pomocí jednoduchého příkazu restore. Tedy celý příkaz by vypadal takto:

restic restore latest –target /var/www/example.com/restore/

Tímto obnovíte poslední zálohu. Pokud byste chtěli obnovit zálohu konkrétní, je potřeba definovat její ID, které získáte právě přes snapshots příkaz.

restic restore ID_ZALOHY –target /var/www/example.com/restore/

Úskalí Resticu

Jediný problém, na který jsme při používání narazili je, že pokud například provozujete webhosting a máte vícero serverů, tak není vhodné všechny zálohy ukládat na jedno objektové úložiště. Problém totiž je v tom, že pokud zavoláte restic prune na vymazání záloh, tak tato operace je poměrně náročná na operační paměť RAM. Pokud jsou tedy zálohy veliké, několik set GB, klasický server už vám na smazání stačit nebude a můžete se dostat do problémů.

Pokud tedy máte velké množství serverů, je lepší pro každý server udělat zvlášť objektové úložiště a promazávat separátně.

Závěr

V tomto článku jsme si prošli základy programu Restic. Samozřejmě jsme neobsáhli všechna nastavení a možnosti tohoto open-source. Nejlepším způsobem jak zjistit plný potenciál je projít si dokumentaci.