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_pristupovy_klic
export AWS_SECRET_ACCESS_KEY=nejaky_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.