Preskoči na vsebino

Nastavitve piškotkov

Za vsako vrsto izberite, katere piškotke dovolite. Svojo izbiro lahko kadar koli spremenite prek povezave Nastavitve piškotkov na dnu vsake strani. Izjava o zasebnosti

Nujni

Vedno vklopljeno

Potrebni so za prijavo, shranjevanje košarice in pomnjenje Vaših izbir. Vedno so vklopljeni.

Kateri piškotki?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša seja in ohranjanje prijave
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cen z DDV ali brez DDV
  • wok_cookies: Vaša izbira glede piškotkov, 12 mesecev

Meri, kateri oglas vodi do obiska ali naročila, da ne plačujemo za oglase, ki ne prinesejo ničesar.

Kateri piškotki?
  • Google Ads prek Google Tag Manager (_gcl_au, _gcl_aw), do 90 dni
  • OpenAI Ads, oglasi v ChatGPT
  • wok_aff: prek katerega partnerja ste prišli k nam (partnerski program), 60 dni

4,6

Država in jezik

Vsaka država ima svojo spletno stran, s cenami in DDV za to državo.

Prikaži

Varnostne kopije z orodjem restic

Modul 8: Varnostne kopije in nadzor · Čas branja: 12 minut

Učni cilj: Po tej lekciji boste z orodjem restic znali ustvarjati šifrirane varnostne kopije v shrambo zunaj svojega strežnika, počistiti stare različice po načrtu hranjenja, preveriti varnostno kopijo in obnoviti datoteke ter vse skupaj nastaviti tako, da teče samodejno.

Ključni pojmi: restic, repozitorij, init, geslo (datoteka z geslom), zaledje (sftp, S3, rest-server), backup, snapshots, forget, --keep-daily/--keep-weekly/--keep-monthly, prune, check, restore, mount, deduplikacija, append-only, časovnik systemd

Zakaj restic?

Programov za varnostno kopiranje je veliko. restic je dobra izbira za lasten strežnik, ker:

  • vse šifrira, preden podatki zapustijo strežnik; shramba vidi le neberljive bloke;
  • izvaja deduplikacijo: datoteka, ki se ni spremenila, se ne shrani znova, zato dnevne varnostne kopije zasedejo malo prostora;
  • podpira veliko vrst shrambe: mapo, drug strežnik prek SFTP, shrambo, združljivo s S3, lasten rest-server;
  • je en sam program, ki je na voljo v skladišču paketov Debiana in Ubuntuja (apt install restic).

Alternativa s podobnimi lastnostmi je BorgBackup. Načela iz te lekcije veljajo tudi zanj.

Pojmi

  • Repozitorij: mesto, kamor restic shranjuje varnostne kopije. Vedno zunaj strežnika, ki ga varnostno kopirate.
  • Posnetek (snapshot): ena varnostna kopija v enem trenutku. (Pozor: to ni isto kot posnetek pri Vašem ponudniku iz lekcije 8.1.)
  • Geslo: vsak repozitorij ima geslo, s katerim se vse šifrira. Dokumentacija orodja restic je glede tega jasna: kdor izgubi geslo, je podatke nepreklicno izgubil.

Ustvarjanje repozitorija

Recimo, da imate strežnik za shrambo backup.example.net, do katerega lahko dostopate prek SFTP s ključem kot uporabnik web1. Najprej na strežniku ustvarite datoteko z geslom (isto geslo shranite tudi v svoj upravitelj gesel, lekcija 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.

Z okoljskima spremenljivkama RESTIC_REPOSITORY in RESTIC_PASSWORD_FILE Vam možnosti -r in --password-file ni treba vsakič vnašati.

Ustvarjanje varnostne kopije

Izdelava in obnovitev varnostne kopije z orodjem restic 1:10

Najprej izvoz podatkovne baze (lekcija 8.1), nato varnostna kopija:

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

Naslednji dan je postopek veliko hitrejši: prenese se le tisto, kar se je spremenilo.

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

Čiščenje: forget in prune

Vsak dan en posnetek več pomeni po enem letu 365 posnetkov. Z ukazom forget določite, katere obdržite, in sicer z načrtom hranjenja:

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

Načrt deluje takole:

  • --keep-daily 7: poglej zadnjih sedem dni, ko obstaja posnetek, in za vsak dan obdrži najnovejšega;
  • --keep-weekly 4: enako za zadnje štiri tedne (od ponedeljka do vključno nedelje);
  • --keep-monthly 6: enako za zadnjih šest mesecev.

Posnetek ostane, če ustreza vsaj enemu od pravil. Vse, kar ne ustreza nobenemu pravilu, se pozabi. Nov načrt najprej preizkusite z --dry-run: tako vidite, kaj bi bilo odstranjeno, ne da bi se karkoli spremenilo.

Pomembna razlika: forget odstrani le sklic na posnetek. Podatki ostanejo v repozitoriju, dokler prune ne počisti blokov, ki jih ne uporablja več noben posnetek. Možnost --prune pri forget naredi oboje naenkrat. Prune traja nekaj časa in zaklene repozitorij, zato ga ne načrtujte hkrati z varnostnim kopiranjem.

Preverjanje: check

Varnostno kopijo, ki se tiho poškoduje, opazite šele ob obnovi. Naj restic redno preverja repozitorij:

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

Navaden check preveri strukturo. Z --read-data-subset tudi dejansko prebere del podatkov in preveri vsebino. To naredite na primer tedensko z nekaj odstotki; tako je čez čas vse vsaj enkrat prebrano.

Obnova: restore in mount

Obnavljajte v ločeno mapo, nikoli neposredno čez izvirnik:

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 najnovejši posnetek; uporabite lahko tudi ID (restic restore 3c7e91d4 ...). Z restic mount /mnt/restic (zahteva FUSE) vidite vse posnetke kot mape, po katerih lahko brskate in kopirate posamezne datoteke. Ustavite s Ctrl+C.

Podatkovno bazo obnovite tako, da pridobite izvoz in ga uvozite, na primer gunzip < alles.sql.gz | mariadb.

Samodejno, vsako noč

Ustvarite skript in časovnik systemd (lekcija 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

Datoteka .service z Type=oneshot in ExecStart=/usr/local/sbin/backup.sh ter datoteka .timer z OnCalendar=*-*-* 03:10:00 in Persistent=true. set -eu poskrbi, da se skript ustavi ob prvi napaki, tako da systemd zagon vidi kot neuspešen. Povežite ga z obvestilom (lekcija 8.3), sicer neuspešne varnostne kopije ne boste opazili.

Proti izsiljevalski programski opremi: append-only

V zgornjem skriptu lahko strežnik sam tudi izbriše varnostno kopijo (forget in prune). Če napadalec prevzame strežnik, lahko to stori tudi on. Dva načina, kako to preprečite:

  • rest-server v načinu append-only: na strežniku za shrambo poganjate lasten rest-server orodja restic z možnostjo --append-only. Spletni strežnik lahko nato varnostne kopije dodaja, ne more pa ničesar izbrisati. Čiščenje (forget --prune) izvajate z drugega, dobro zavarovanega računalnika s polnimi pravicami.
  • Shramba z upravljanjem različic ali zaklepanjem objektov pri ponudniku S3, tako da je izbrisane objekte še nekaj časa mogoče pridobiti nazaj.

Pazite na subtilno past, ki jo omenja dokumentacija orodja restic: napadalec, ki doda lažne posnetke, lahko načrt, kot je --keep-weekly, zavede, da pozabi prave posnetke. Z --keep-within (na primer --keep-within 30d) ostane vse iz tega obdobja, lažno ali pravo.

Povzetek

  • restic šifrira, izvaja deduplikacijo in lahko shranjuje v veliko vrst shrambe zunaj Vašega strežnika; izgubljeno geslo pomeni, da je izgubljeno vse.
  • init ustvari repozitorij, backup posnetek, snapshots jih prikaže.
  • forget z --keep-* določi, kaj obdržite; šele prune (ali --prune) podatke zares počisti. Preizkusite z --dry-run.
  • check (z --read-data-subset) preverja, restore --target obnovi v ločeno mapo, mount Vam omogoča brskanje.
  • Avtomatizirajte s časovnikom in obvestilom ter imejte vsaj en repozitorij zunaj dosega strežnika (append-only).

Kviz

1. Kaj se zgodi, če zaženete restic forget --keep-daily 7 brez --prune?



2. Geslo za svoj repozitorij restic imate shranjeno le v /root/.restic-wachtwoord na strežniku. Strežnik je izgubljen. Kaj zdaj?



3. Zakaj varnostno kopijo obnovite v /tmp/terug in ne neposredno na izvirno mesto?



4. Kaj restic check --read-data-subset=5% doda navadnemu restic check?



5. Napadalec, ki prevzame Vaš spletni strežnik, lahko prek skripta za varnostno kopiranje izvede tudi restic forget --prune. Kaj Vas pred tem zaščiti?



Naloga

Naloga Z8.2: Kaj ostane po ukazu forget? V primeru datoteke restic-snapshots.txt sta seznam posnetkov in načrt hranjenja. Določite, kateri posnetki ostanejo po restic forget s tem načrtom. Program primerja z ustaljenim ključem.

Naloga Z8.2: Kaj ostane po ukazu forget?

Datoteka za to nalogo: restic-snapshots.txt





Tega, kar vnesete, in tega, kar najdemo, ne shranjujemo. Vaš brskalnik si zapomni Vaše odgovore in to, ali ste nalogo opravili. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo (skoraj) pravilno opravili; tudi to lahko tam izbrišete.

Naloga O8.2: Preizkus obnovitve. Na svojem strežniku ustvarite repozitorij restic zunaj strežnika, naredite varnostno kopijo /etc in svojih podatkov ter obnovite eno mapo v /tmp/terug. Primerjajte z diff, zapišite, koliko časa je trajalo, in odgovorite, kje zunaj strežnika sta shranjena Vaše geslo in Vaši podatki za dostop do shrambe.

Naloga O8.2: Preizkus obnovitve

To nalogo opravite sami; nihče je ne pregleda. Odkljukajte, kar ste naredili, in nalogo označite kot opravljeno.




Vaše kljukice in zapiski ostanejo samo v tem brskalniku, nikamor jih ne pošiljamo. Če ste prijavljeni, v Moji tečaji shranimo samo podatek, da ste nalogo opravili.

Za nadaljnje branje

Trenutek…

Nastavite svoje domene

Za vsako domeno uredite imenske strežnike, povezavo z gostovanjem in kdo bo imetnik.

Nalaganje Vaših domen…