Prejsť na obsah

Nastavenia súborov cookie

Vyberte, aké druhy súborov cookie povolíte. Svoj výber môžete kedykoľvek zmeniť cez Nastavenia súborov cookie v dolnej časti každej stránky. Vyhlásenie o ochrane osobných údajov

Nevyhnutné

Vždy zapnuté

Potrebné na prihlásenie, uchovanie košíka a zapamätanie vašich volieb. Sú vždy zapnuté.

Ktoré súbory cookie?
  • weboke_sessie, weboke_klant, weboke_remember: vaša relácia a trvalé prihlásenie
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazovanie cien s DPH alebo bez DPH
  • wok_cookies: váš výber súborov cookie, 12 mesiacov

Merajú, ktorá reklama vedie k návšteve alebo objednávke, aby sme neplatili za reklamy, ktoré nič neprinášajú.

Ktoré súbory cookie?
  • Google Ads cez Google Tag Manager (_gcl_au, _gcl_aw), najviac 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: ktorý partner vás k nám odporučil (partnerský program), 60 dní

4,6

Krajina a jazyk

Každá krajina má vlastný web s cenami a DPH danej krajiny.

Zobraziť

Zálohy pomocou restic

Modul 8: Zálohy a monitorovanie · Čas čítania: 12 minút

Cieľ lekcie: Po tejto lekcii dokážete pomocou restic vytvárať šifrované zálohy na úložisko mimo vášho servera, mazať staré verzie podľa plánu uchovávania, kontrolovať zálohu a obnovovať súbory a celé to nechať bežať automaticky.

Kľúčové pojmy: restic, repozitár, init, heslo (súbor s heslom), backend (sftp, S3, rest-server), backup, snapshots, forget, --keep-daily/--keep-weekly/--keep-monthly, prune, check, restore, mount, deduplikácia, append-only, systemd časovač

Prečo restic?

Zálohovacích programov je veľa. restic je dobrá voľba pre vlastný server, pretože:

  • všetko zašifruje skôr, ako to opustí server; úložisko vidí len nečitateľné bloky;
  • deduplikuje: súbor, ktorý sa nezmenil, sa znova neukladá, takže denné zálohy zaberú málo miesta;
  • pozná veľa druhov úložísk: priečinok, iný server cez SFTP, úložisko kompatibilné s S3, vlastný rest-server;
  • je to jeden program, dostupný v repozitári balíkov Debianu aj Ubuntu (apt install restic).

Alternatívou s podobnými vlastnosťami je BorgBackup. Princípy z tejto lekcie platia aj tam.

Pojmy

  • Repozitár: miesto, kam restic ukladá zálohy. Vždy mimo servera, ktorý zálohujete.
  • Snapshot: jedna záloha v jednom okamihu. (Pozor: ide o niečo iné ako snapshot od vášho poskytovateľa z lekcie 8.1.)
  • Heslo: každý repozitár má heslo, ktorým sa všetko šifruje. Dokumentácia restic je v tom jasná: kto stratí heslo, nenávratne stratí aj dáta.

Vytvorenie repozitára

Predpokladajme, že máte úložný server backup.example.net, ku ktorému sa dostanete cez SFTP s kľúčom ako používateľ web1. Najprv na serveri vytvorte súbor s heslom (a rovnaké heslo uložte aj do svojho správcu hesiel, lekcia 8.1):

root@web1:~# install -m 600 /dev/null /root/.restic-wachtwoord
root@web1:~# openssl rand -base64 32 > /root/.restic-wachtwoord
root@web1:~# export RESTIC_REPOSITORY=sftp:web1@backup.example.net:/srv/restic/web1
root@web1:~# export RESTIC_PASSWORD_FILE=/root/.restic-wachtwoord
root@web1:~# restic init
created restic repository 5f1a9c2e3b at sftp:web1@backup.example.net:/srv/restic/web1

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.

Vďaka premenným prostredia RESTIC_REPOSITORY a RESTIC_PASSWORD_FILE nemusíte zakaždým písať voľby -r a --password-file.

Vytvorenie zálohy

Najprv výpis databázy (lekcia 8.1), potom záloha:

root@web1:~# restic backup /etc /var/www /opt /var/backups/db \
    --exclude /var/www/*/cache --tag dagelijks
repository 5f1a9c2e opened (version 2, compression level auto)
...
Files:        8421 new,     0 changed,     0 unmodified
Dirs:         1203 new,     0 changed,     0 unmodified
Added to the repository: 612.338 MiB (402.117 MiB stored)

processed 8421 files, 1.204 GiB in 0:41
snapshot 3c7e91d4 saved

Na druhý deň je záloha oveľa rýchlejšia: prenesie sa len to, čo sa zmenilo.

root@web1:~# restic snapshots
ID        Time                 Host  Tags       Paths
-----------------------------------------------------------------------
3c7e91d4  2026-11-08 03:10:02  web1  dagelijks  /etc /opt /var/backups/db /var/www
a18f0b77  2026-11-09 03:10:05  web1  dagelijks  /etc /opt /var/backups/db /var/www
-----------------------------------------------------------------------
2 snapshots

Upratovanie: forget a prune

Každý deň jeden snapshot navyše znamená po roku 365 snapshotov. Príkazom forget pomocou plánu uchovávania určíte, ktoré si ponecháte:

root@web1:~# restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Plán funguje takto:

  • --keep-daily 7: pozrie sa na posledných sedem dní, v ktoré existuje snapshot, a z každého dňa ponechá najnovší;
  • --keep-weekly 4: to isté pre posledné štyri týždne (pondelok až nedeľa);
  • --keep-monthly 6: to isté pre posledných šesť mesiacov.

Snapshot zostane, ak spĺňa aspoň jedno z pravidiel. Všetko, čo nespĺňa žiadne pravidlo, sa zabudne. Nový plán najprv vyskúšajte s --dry-run: uvidíte, čo by sa odstránilo, bez toho, aby sa čokoľvek zmenilo.

Dôležitý rozdiel: forget odstráni len odkaz na snapshot. Dáta zostanú v repozitári, kým prune neuprace bloky, ktoré už nepoužíva žiadny snapshot. Voľba --prune pri forget to urobí naraz. Prune trvá dlhšie a uzamkne repozitár, preto ho neplánujte na rovnaký čas ako zálohu.

Kontrola: check

Zálohu, ktorá sa potichu poškodí, odhalíte až pri obnove. Nechajte restic pravidelne kontrolovať repozitár:

root@web1:~# restic check
...
no errors were found
root@web1:~# restic check --read-data-subset=5%

Samotný check kontroluje štruktúru. S --read-data-subset aj skutočne načíta časť dát a skontroluje ich obsah. Robte to napríklad raz týždenne s niekoľkými percentami; po čase sa tak všetko aspoň raz prečíta.

Obnova: restore a mount

Obnovujte do samostatného priečinka, nikdy rovno cez originál:

root@web1:~# restic restore latest --target /tmp/terug --include /etc/nginx
restoring snapshot a18f0b77 of [/etc /opt /var/backups/db /var/www] at 2026-11-09 03:10:05 ...
Summary: Restored 41 files/dirs (88.104 KiB) in 0:00
root@web1:~# diff -r /tmp/terug/etc/nginx /etc/nginx && echo gelijk
gelijk

latest je najnovší snapshot; môžete použiť aj ID (restic restore 3c7e91d4 ...). Pomocou restic mount /mnt/restic (vyžaduje FUSE) vidíte všetky snapshoty ako priečinky, môžete si ich prezerať a kopírovať jednotlivé súbory. Ukončíte to klávesmi Ctrl+C.

Databázu obnovíte tak, že vrátite výpis a naimportujete ho, napríklad gunzip < alles.sql.gz | mariadb.

Automaticky, každú noc

Vytvorte skript a systemd časovač (lekcia 6.3). Skript:

#!/bin/sh
# /usr/local/sbin/backup.sh
set -eu
export RESTIC_REPOSITORY=sftp:web1@backup.example.net:/srv/restic/web1
export RESTIC_PASSWORD_FILE=/root/.restic-wachtwoord
mariadb-dump --single-transaction --all-databases | gzip > /var/backups/db/alles.sql.gz
restic backup /etc /var/www /opt /var/backups/db --tag dagelijks
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Ďalej .service s Type=oneshot a ExecStart=/usr/local/sbin/backup.sh a .timer s OnCalendar=*-*-* 03:10:00 a Persistent=true. set -eu zabezpečí, že sa skript zastaví pri prvej chybe, takže systemd vyhodnotí beh ako neúspešný. Pripojte k tomu upozornenie (lekcia 8.3), inak si neúspešnú zálohu nevšimnete.

Proti ransomvéru: append-only

V skripte vyššie môže zálohu zmazať aj samotný server (forget a prune). Ak útočník ovládne server, môže to teda urobiť aj on. Dá sa tomu zabrániť dvoma spôsobmi:

  • rest-server v režime append-only: na úložnom serveri spustíte vlastný rest-server od restic s voľbou --append-only. Webový server potom môže zálohy pridávať, ale nič nezmaže. Upratovanie (forget --prune) robíte z iného, dobre zabezpečeného počítača s plnými právami.
  • Úložisko s verziovaním alebo uzamknutím objektov u poskytovateľa S3, takže odstránené objekty sa dajú ešte istý čas obnoviť.

Pozor na zákernú pascu, ktorú uvádza samotná dokumentácia restic: útočník, ktorý pridá falošné snapshoty, môže plán ako --keep-weekly prinútiť zabudnúť skutočné snapshoty. S --keep-within (napríklad --keep-within 30d) zostane všetko z daného obdobia, falošné aj skutočné.

Zhrnutie

  • restic šifruje, deduplikuje a vie zálohovať na veľa druhov úložísk mimo vášho servera; stratené heslo znamená stratené všetko.
  • init vytvorí repozitár, backup snapshot, snapshots ich zobrazí.
  • forget s --keep-* určuje, čo si ponecháte; dáta skutočne uprace až prune (alebo --prune). Skúšajte s --dry-run.
  • check (s --read-data-subset) kontroluje, restore --target obnovuje do samostatného priečinka, mount vám umožní prezerať zálohy.
  • Automatizujte pomocou časovača a upozornenia a aspoň jeden repozitár majte mimo dosahu servera (append-only).

Kvíz

1. Čo sa stane, keď spustíte restic forget --keep-daily 7 bez --prune?



2. Heslo k repozitáru restic máte uložené len v /root/.restic-wachtwoord na serveri. Server je stratený. Čo teraz?



3. Prečo obnovujete zálohu do /tmp/terug, a nie rovno na pôvodné miesto?



4. Čo pridáva restic check --read-data-subset=5% k obyčajnému restic check?



5. Útočník, ktorý ovládne váš webový server, môže cez zálohovací skript spustiť aj restic forget --prune. Čo vás pred tým chráni?



Úloha

Úloha Z8.2: Čo zostane po príkaze forget? V ukážkovom súbore restic-snapshots.txt je zoznam snapshotov a plán uchovávania. Určte, ktoré snapshoty zostanú po restic forget s týmto plánom. Program to porovná s pevným kľúčom.

Úloha Z8.2: Čo zostane po príkaze forget?

Súbor k tejto úlohe: restic-snapshots.txt





Čo vyplníte a čo nájdeme, neukladáme. Váš prehliadač si pamätá vaše odpovede a to, či ste úlohu splnili. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že úloha bola (takmer) správne vyriešená; aj to tam môžete odstrániť.

Úloha O8.2: Test obnovy. Na vlastnom serveri vytvorte repozitár restic mimo servera, zálohujte /etc a svoje dáta a jeden priečinok obnovte do /tmp/terug. Porovnajte pomocou diff, zapíšte si, ako dlho to trvalo, a odpovedzte, kde mimo servera máte uložené heslo a prístupové údaje k úložisku.

Úloha O8.2: Test obnovy

Túto úlohu vykonávate sami, nikto ju nekontroluje. Odškrtnite, čo ste urobili, a označte úlohu ako splnenú.




Vaše zaškrtnutia a poznámky zostávajú iba v tomto prehliadači, nikam ich neposielame. Po prihlásení si v sekcii Moje kurzy uchovávame iba to, že ste úlohu splnili.

Ďalšie čítanie

Chvíľu strpenia…

Nastavte svoje domény

Pri každej doméne nastavte nameservery, prepojenie s hostingom a to, kto bude jej vlastníkom.

Načítavajú sa vaše domény…