Siirry suoraan sisältöön

Evästeasetukset

Valitse, mitä evästetyyppejä sallit. Voit muuttaa valintaasi milloin tahansa jokaisen sivun alareunassa olevasta kohdasta Evästeasetukset. Tietosuojaseloste

Välttämättömät

Aina käytössä

Tarvitaan sisäänkirjautumiseen, ostoskorin säilyttämiseen ja valintojesi muistamiseen. Nämä ovat aina käytössä.

Mitkä evästeet?
  • weboke_sessie, weboke_klant, weboke_remember: istuntosi ja sisäänkirjautuneena pysyminen
  • weboke_basket: ostoskorisi
  • wkBtwIncl: hintojen näyttäminen verollisina tai verottomina
  • wok_cookies: evästevalintasi, 12 kuukautta

Mittaa, mikä mainos johtaa käyntiin tai tilaukseen, jotta emme maksa mainoksista, joista ei ole hyötyä.

Mitkä evästeet?
  • Google Ads Google Tag Managerin kautta (_gcl_au, _gcl_aw), enintään 90 päivää
  • OpenAI Ads, mainokset ChatGPT-palvelussa
  • wok_aff: minkä kumppanin kautta tulit meille (kumppaniohjelma), 60 päivää

4,6

Maa ja kieli

Jokaisella maalla on oma sivustonsa, jossa on kyseisen maan hinnat ja ALV.

Näytä

Varmuuskopiot resticillä

Moduuli 8: Varmuuskopiot ja valvonta · Lukuaika: 12 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat tehdä resticillä salattuja varmuuskopioita palvelimen ulkopuoliseen tallennustilaan, siivota vanhat versiot säilytyssuunnitelman mukaan, tarkistaa varmuuskopion ja palauttaa tiedostoja sekä ajaa kaiken automaattisesti.

Keskeiset käsitteet: restic, repository, init, salasana(tiedosto), backend (sftp, S3, rest-server), backup, snapshots, forget, --keep-daily/--keep-weekly/--keep-monthly, prune, check, restore, mount, deduplikointi, append-only, systemd-ajastin

Miksi restic?

Varmuuskopio-ohjelmia on paljon. restic on hyvä valinta omalle palvelimelle, koska se:

  • salaa kaiken ennen kuin tiedot lähtevät palvelimelta; tallennustila näkee vain lukukelvottomia lohkoja;
  • deduplikoi: muuttumatonta tiedostoa ei tallenneta uudelleen, joten päivittäiset varmuuskopiot vievät vähän tilaa;
  • tukee monenlaista tallennustilaa: kansiota, toista palvelinta SFTP:n kautta, S3-yhteensopivaa tallennustilaa ja omaa rest-serveriä;
  • on yksi ohjelma, joka löytyy Debianin ja Ubuntun pakettilähteestä (apt install restic).

Vaihtoehto, jolla on samanlaiset ominaisuudet, on BorgBackup. Tämän oppitunnin periaatteet pätevät myös siihen.

Käsitteet

  • Repository: paikka, johon restic tallentaa varmuuskopiot. Aina sen palvelimen ulkopuolella, jota varmuuskopioit.
  • Snapshot: yksi varmuuskopio yhdeltä hetkeltä. (Huomaa: tämä on eri asia kuin palveluntarjoajasi snapshot oppitunnilta 8.1.)
  • Salasana: jokaisella repositorylla on salasana, jolla kaikki salataan. Resticin dokumentaatio sanoo asian selvästi: jos salasana katoaa, tiedot menetetään peruuttamattomasti.

Repositoryn luominen

Oletetaan, että sinulla on tallennuspalvelin backup.example.net, johon pääset SFTP:n kautta avaimella käyttäjänä web1. Luo ensin palvelimelle salasanatiedosto (ja tallenna sama salasana salasanojen hallintaan, oppitunti 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.

Ympäristömuuttujien RESTIC_REPOSITORY ja RESTIC_PASSWORD_FILE ansiosta sinun ei tarvitse kirjoittaa valitsimia -r ja --password-file joka kerta.

Varmuuskopion tekeminen

Ensin tietokantavedos (oppitunti 8.1), sitten varmuuskopio:

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

Seuraavana päivänä se on paljon nopeampi: mukaan lähtee vain se, mikä on muuttunut.

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

Siivoaminen: forget ja prune

Kun joka päivä tulee uusi snapshot, vuoden päästä niitä on 365. forget-komennolla päätät säilytyssuunnitelman avulla, mitkä säilytetään:

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

Suunnitelma toimii näin:

  • --keep-daily 7: katso seitsemää viimeisintä päivää, joilta on snapshot, ja säilytä kultakin päivältä uusin;
  • --keep-weekly 4: sama neljälle viimeisimmälle viikolle (maanantaista sunnuntaihin);
  • --keep-monthly 6: sama kuudelle viimeisimmälle kuukaudelle.

Snapshot säilyy, jos se täyttää vähintään yhden säännöistä. Kaikki, mikä ei täytä yhtään sääntöä, unohdetaan. Kokeile uutta suunnitelmaa ensin valitsimella --dry-run: näet, mitä poistuisi, mutta mitään ei muuteta.

Tärkeä ero: forget poistaa vain viittauksen snapshotiin. Tiedot jäävät repositoryyn, kunnes prune siivoaa lohkot, joita mikään snapshot ei enää käytä. Valitsin --prune komennossa forget tekee tämän samalla kertaa. Prune vie aikaa ja lukitsee repositoryn, joten älä ajoita sitä samaan aikaan varmuuskopioinnin kanssa.

Tarkistaminen: check

Huomaamatta vioittuneen varmuuskopion huomaat vasta palauttaessa. Anna resticin tarkistaa repository säännöllisesti:

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

Pelkkä check tarkistaa rakenteen. Valitsimella --read-data-subset se myös oikeasti lukee osan tiedoista takaisin ja tarkistaa sisällön. Tee näin esimerkiksi viikoittain muutamalle prosentille; ajan mittaan kaikki tulee luettua kertaalleen.

Palauttaminen: restore ja mount

Palauta erilliseen kansioon, älä koskaan suoraan alkuperäisen päälle:

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 on uusin snapshot; voit käyttää myös tunnistetta (restic restore 3c7e91d4 ...). Komennolla restic mount /mnt/restic (vaatii FUSEn) näet kaikki snapshotit kansioina ja voit selata niitä ja kopioida yksittäisiä tiedostoja. Lopeta painamalla Ctrl+C.

Tietokannan palautat hakemalla vedoksen takaisin ja tuomalla sen, esimerkiksi gunzip < alles.sql.gz | mariadb.

Automaattisesti joka yö

Tee skripti ja systemd-ajastin (oppitunti 6.3). Skripti:

#!/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

Tee .service, jossa on Type=oneshot ja ExecStart=/usr/local/sbin/backup.sh, sekä .timer, jossa on OnCalendar=*-*-* 03:10:00 ja Persistent=true. set -eu pysäyttää skriptin ensimmäiseen virheeseen, jolloin systemd näkee ajon epäonnistuneena. Liitä mukaan ilmoitus (oppitunti 8.3), muuten et huomaa epäonnistunutta varmuuskopiota.

Kiristyshaittaohjelmia vastaan: append-only

Yllä olevassa skriptissä palvelin voi itse myös poistaa varmuuskopion (forget ja prune). Jos hyökkääjä kaappaa palvelimen, hänkin voi siis tehdä niin. Kaksi tapaa estää tämä:

  • rest-server append-only-tilassa: aja tallennuspalvelimella resticin omaa rest-serveriä valitsimella --append-only. Verkkopalvelin voi silloin lisätä varmuuskopioita, mutta ei poistaa mitään. Siivouksen (forget --prune) teet toiselta, hyvin suojatulta koneelta täysin oikeuksin.
  • Versionhallintaa tai objektilukitusta tukeva tallennustila S3-palveluntarjoajalla, jolloin poistetut objektit voi vielä jonkin aikaa palauttaa.

Huomaa hienovarainen sudenkuoppa, jonka resticin dokumentaatio itse mainitsee: hyökkääjä, joka lisää valesnapshoteja, voi saada suunnitelman kuten --keep-weekly unohtamaan oikeita snapshoteja. Valitsimella --keep-within (esimerkiksi --keep-within 30d) kaikki kyseiseltä ajalta säilyy, oli se valetta tai aitoa.

Yhteenveto

  • restic salaa, deduplikoi ja osaa tallentaa monenlaiseen palvelimen ulkopuoliseen tallennustilaan; jos salasana katoaa, kaikki katoaa.
  • init luo repositoryn, backup snapshotin ja snapshots näyttää ne.
  • forget yhdessä --keep-*:n kanssa määrää, mitä säilytetään; vasta prune (tai --prune) siivoaa tiedot oikeasti. Kokeile ensin valitsimella --dry-run.
  • check (valitsimella --read-data-subset) tarkistaa, restore --target palauttaa erilliseen kansioon ja mount antaa selata.
  • Automatisoi ajastimella ja ilmoituksella, ja pidä vähintään yksi repository palvelimen ulottumattomissa (append-only).

Tietovisa (quiz)

1. Mitä tapahtuu, kun suoritat restic forget --keep-daily 7 ilman valitsinta --prune?



2. Restic-repositorysi salasana on tallessa vain tiedostossa /root/.restic-wachtwoord palvelimella. Palvelin on menetetty. Mitä nyt?



3. Miksi palautat varmuuskopion kansioon /tmp/terug etkä suoraan alkuperäiseen paikkaan?



4. Mitä restic check --read-data-subset=5% lisää tavalliseen komentoon restic check?



5. Verkkopalvelimesi kaapannut hyökkääjä voi varmuuskopioskriptin kautta suorittaa myös restic forget --prune. Mikä suojaa tältä?



Tehtävä

Tehtävä Z8.2: Mikä jää jäljelle forgetin jälkeen? Esimerkkitiedostossa restic-snapshots.txt on luettelo snapshoteista ja säilytyssuunnitelma. Selvitä, mitkä snapshotit jäävät jäljelle komennon restic forget jälkeen tällä suunnitelmalla. Ohjelma vertaa vastaustasi kiinteään avaimeen.

Tehtävä Z8.2: Mitä jää jäljelle forgetin jälkeen?

Tähän tehtävään liittyvä tiedosto: restic-snapshots.txt





Sitä, mitä kirjoitat ja mitä löydämme, ei tallenneta. Selaimesi muistaa vastauksesi ja sen, oletko suorittanut tehtävän. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että tehtävä oli (lähes) oikein; voit poistaa sen myös sieltä.

Tehtävä O8.2: Palautustesti. Luo omalla palvelimellasi restic-repository palvelimen ulkopuolelle, tee varmuuskopio kohteesta /etc ja tiedoistasi, ja palauta yksi kansio kohteeseen /tmp/terug. Vertaa komennolla diff, kirjaa ylös, kuinka kauan se kesti, ja vastaa, missä salasanasi ja tallennustilan tunnukset säilytetään palvelimen ulkopuolella.

Tehtävä O8.2: Palautustesti

Tämän tehtävän teet itse, kukaan ei tarkista sitä. Merkitse tekemäsi kohdat ja merkitse tehtävä tehdyksi.




Merkintäsi ja muistiinpanosi pysyvät vain tässä selaimessa, emme lähetä niitä minnekään. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että olet tehnyt tehtävän.

Lue lisää

Hetkinen…

Määritä verkkotunnuksesi

Määritä kullekin verkkotunnukselle nimipalvelimet, liitos webhotelliin ja se, kuka tulee omistajaksi.

Ladataan verkkotunnuksia…