Wolkra

Oppaat

Varmuuskopiointistrategia VPS:llesi

Toimiva varmuuskopiointistrategia VPS:lle: 3-2-1-sääntö, palvelinvarmuuskopiot vs. tilannevedokset, tietokantavedokset, salatut etäkopiot resticillä ja palautustestit.

Päivitetty 4 min lukuaika

Hyvässä VPS:n varmuuskopiointistrategiassa on kolme kerrosta: automaattiset palvelinvarmuuskopiot nopeisiin kokonaispalautuksiin, sovellustason vedokset tietokannoille ja salattu etäkopio toisessa sijainnissa. Ota lisäksi tilannevedos ennen jokaista riskialtista muutosta ja testaa palautus säännöllisesti, koska testaamaton varmuuskopio on vain toive.

Tämä opas käy läpi jokaisen kerroksen komentoineen Ubuntu 24.04:lle ja Debian 12:lle.

Aloita 3-2-1-säännöstä

Klassinen sääntö pätee edelleen:

  • 3 kopiota datastasi (käytössä oleva ja kaksi varmuuskopiota),
  • 2 erilaisella tallennusmedialla tai järjestelmällä,
  • joista 1 etänä, toisessa sijainnissa tai toisella palveluntarjoajalla.

VPS:llä se tarkoittaa yleensä: itse palvelin, palveluntarjoajan varmuuskopiot ja salattu kopio jossain muualla.

Tiedä, miltä suojaudut

Riski Mikä auttaa
Epäonnistunut päivitys tai asetusmuutos Tilannevedos ennen muutosta
Poistetut tiedostot, rikkinäinen sovellus Päivittäiset varmuuskopiot useilla palautuspisteillä
Tietokannan korruptoituminen Loogiset vedokset (pg_dump, mariadb-dump)
Murrettu palvelin tai kiristyshaittaohjelma Etäkopiot, joita palvelin ei voi poistaa
Menetetty pääsy tiliin Tilin ulkopuolella säilytettävät kopiot

Eri riskit vaativat eri kerroksia. Siksi yksi menetelmä ei koskaan riitä tärkeälle datalle.

Kerros 1: palveluntarjoajan varmuuskopiot ja tilannevedokset

Automaattiset varmuuskopiot

Wolkrassa voit ottaa käyttöön päivittäiset automaattiset varmuuskopiot palvelinkohtaisesti. Ne maksavat 20 % palvelimen hinnasta ja säilyttävät 7 palautuspistettä. Varmuuskopio tallentaa koko palvelimen, joten palautus tuo takaisin käyttöjärjestelmän, asetukset ja datan yhdessä. Siksi se on nopein tie takaisin vakavan virheen jälkeen.

Tilannevedokset

Tilannevedokset otetaan tarpeen mukaan ja laskutetaan gigatavuittain. Käytä niitä:

  • ennen käyttöjärjestelmän, tietokannan tai sovelluksen pääversion päivittämistä;
  • ennen kokeiluja palomuuri- tai verkkoasetuksilla;
  • pohjana: tilannevedoksesta voi luoda uusia palvelimia.

Vaiheet löydät sivuilta varmuuskopiot ja tilannevedokset ja dokumentaatiosta.

Levytason kopiot johdonmukaisiksi

Käynnissä olevan palvelimen varmuuskopio on kuin pistokkeen irrottaminen seinästä: tiedostot ovat johdonmukaisia tiedostojärjestelmän tasolla, mutta kesken kirjoituksen ollut tietokanta voi tarvita palautumisen. Tietokannat on tehty kestämään tämä, mutta siisti vedos (kerros 2) poistaa epävarmuuden.

Kerros 2: sovellustason vedokset

PostgreSQL

bash
sudo mkdir -p /var/backups/db && sudo chown postgres: /var/backups/db
sudo -u postgres sh -c 'pg_dump -Fc mydb > /var/backups/db/mydb-$(date +%F-%H%M).dump'

-Fc on pakattu custom-muoto; palauta se komennolla pg_restore.

MariaDB tai MySQL

bash
sudo sh -c 'mariadb-dump --single-transaction --routines --all-databases | gzip > /var/backups/db/all-$(date +%F-%H%M).sql.gz'

--single-transaction antaa johdonmukaisen vedoksen InnoDB-tauluista lukitsematta niitä.

Dockerissa

bash
docker compose exec -T db pg_dump -U app app | gzip > ~/backups/app-$(date +%F).sql.gz

Ajastus ja siivous

Laita vedos skriptiin ja aja se systemd-ajastimesta tai cronista, ja poista sitten vanhat tiedostot:

bash
find /var/backups/db -type f -mtime +14 -delete

Kerros 3: salatut etäkopiot resticillä

restic salaa, deduplikoi ja lähettää varmuuskopiot moniin kohteisiin: toiselle palvelimelle SFTP:n yli tai mihin tahansa S3-yhteensopivaan objektitallennukseen.

Asennus

bash
sudo apt install -y restic

Repositorion valinta

Esimerkit käyttävät SFTP:tä omaan hallitsemaasi varmuuskopiopalvelimeen. S3-yhteensopiva bucket toimii samoin s3:-repositorio-URL-osoitteilla ja ympäristömuuttujiin asetetuilla tunnuksilla.

bash
sudo mkdir -p /etc/restic && sudo chmod 700 /etc/restic
openssl rand -base64 32 | sudo tee /etc/restic/password >/dev/null
sudo chmod 600 /etc/restic/password

sudo tee /etc/restic/env >/dev/null <<'EOF'
RESTIC_REPOSITORY=sftp:[email protected]:/srv/restic/web-1
RESTIC_PASSWORD_FILE=/etc/restic/password
EOF
sudo chmod 600 /etc/restic/env

Root tarvitsee SSH-avaimen, jolla voi kirjautua palvelimelle backup.example.com (katso SSH-avaimet). Säilytä resticin salasana myös palvelimen ulkopuolella. Ilman sitä kukaan ei voi lukea varmuuskopioita, et edes sinä.

Alustus ja ajo

bash
sudo bash -c 'set -a; . /etc/restic/env; restic init'
sudo bash -c 'set -a; . /etc/restic/env; restic backup /etc /var/www /var/backups/db /home --exclude-caches'
sudo bash -c 'set -a; . /etc/restic/env; restic snapshots'

Säilytys

bash
sudo bash -c 'set -a; . /etc/restic/env; restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune'

Tämä säilyttää viikon päivittäiset, kuukauden viikoittaiset ja puolen vuoden kuukausittaiset kopiot.

Automatisointi systemd-ajastimella

/etc/systemd/system/restic-backup.service:

ini
[Unit]
Description=restic backup
After=network-online.target
Wants=network-online.target

[Service]
Type=oneshot
EnvironmentFile=/etc/restic/env
ExecStart=/usr/bin/restic backup /etc /var/www /var/backups/db /home --exclude-caches
ExecStartPost=/usr/bin/restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

/etc/systemd/system/restic-backup.timer:

ini
[Unit]
Description=Nightly restic backup

[Timer]
OnCalendar=*-*-* 03:30
RandomizedDelaySec=15m
Persistent=true

[Install]
WantedBy=timers.target
bash
sudo systemctl daemon-reload
sudo systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer

Aja tietokantavedos ennen resticiä, esimerkiksi ExecStartPre=-rivillä, joka kutsuu vedosskriptiäsi.

Suojaa murrettua palvelinta vastaan

Jos hyökkääjä saa root-oikeudet, hän voi poistaa varmuuskopiot, joihin palvelin pääsee. Pienennä riskiä:

  • anna kohteen varmuuskopiokäyttäjälle append-only-oikeus, jos työkalu tukee sitä (resticin REST-palvelimessa on --append-only-tila);
  • aja siivous toiselta koneelta;
  • pidä vähintään yksi kopio paikassa, johon palvelimella ei ole tunnuksia.

Mitä varmuuskopioida

  • /etc asetuksia varten.
  • Sovelluksen koodi ja ladatut tiedostot: /var/www, /srv, /opt tai sovelluksesi hakemisto.
  • Tietokantavedokset, ei raakoja tietokantatiedostoja.
  • Tilallisten konttien Docker-volumet tai niiden vedokset.
  • TLS- ja sovellussalaisuudet salattuina.
  • Lyhyt README, joka kertoo, miten palvelin rakennetaan uudelleen.

Yleensä et tarvitse hakemistoja /var/cache ja /tmp, pakettivälimuisteja tai Docker-kuvien kerroksia, jotka voi hakea uudelleen.

Lohkotallennuslevyt

Jos datasi on lohkotallennuslevyllä, levyn voi irrottaa ja liittää uuteen palvelimeen, mikä auttaa palvelinvioissa. Se on silti vain yksi kopio, joten sisällytä se resticiin tai vedoksiin kuten muukin data.

Testaa palautus

Valitse aikataulu, esimerkiksi kuukausittain, ja tee jokin näistä:

  1. Koko palvelin: luo uusi palvelin varmuuskopiosta tai tilannevedoksesta, käynnistä se testinimellä ja tarkista, että sovellus toimii.
  2. Tiedostot: palauta väliaikaiseen hakemistoon ja vertaa.
bash
sudo bash -c 'set -a; . /etc/restic/env; restic restore latest --target /tmp/restore-test --include /etc/caddy'
sudo bash -c 'set -a; . /etc/restic/env; restic check'
  1. Tietokanta: lataa vedos tuoreeseen tietokantaan ja aja muutama kysely.

Tuntilaskutuksella tunnin palautustestipalvelin maksaa hyvin vähän. Kirjaa ylös, kauanko palautus kesti; se on todellinen palautumisaikasi.

Yksinkertainen suunnitelma kopioitavaksi

Mitä Miten Säilytys
Koko palvelin Palveluntarjoajan päivittäiset varmuuskopiot 7 palautuspistettä
Ennen muutoksia Tilannevedos Poista viikon kuluttua
Tietokannat Vedos 6 tunnin välein 14 päivää paikallisesti
Tiedostot ja vedokset restic, öisin, etänä 7 päivittäistä, 4 viikoittaista, 6 kuukausittaista
Palautustesti Uusi palvelin varmuuskopiosta Kuukausittain

Sovita luvut siihen, kuinka paljon dataa sinulla on varaa menettää ja kuinka nopeasti sinun täytyy palata toimintaan. Muun palvelimen käyttöönoton löydät oppaista ensimmäiset askeleet uudella VPS:llä ja Ubuntu-palvelimen suojaaminen.

Usein kysytyt kysymykset

Mitä eroa on tilannevedoksella ja varmuuskopiolla?

Tilannevedos on käsin otettu kopio tietyltä hetkeltä, usein ennen riskialtista muutosta. Varmuuskopiot otetaan automaattisesti aikataulun mukaan, ja niistä säilytetään useita palautuspisteitä. Molemmat suojaavat virheiltä; kumpikaan ei korvaa etäkopiota.

Kuinka usein VPS pitäisi varmuuskopioida?

Vähintään päivittäin kaikesta, mikä muuttuu. Tärkeää dataa sisältävät tietokannat tarvitsevat usein tiheämpiä vedoksia, joskus tunneittain.

Riittävätkö palveluntarjoajan varmuuskopiot?

Ne ovat vahva ensimmäinen kerros ja nopein tapa palauttaa koko palvelin. Tärkeästä datasta kannattaa lisäksi pitää kopio toisella palveluntarjoajalla tai toisessa sijainnissa, jotta yksi tili tai yksi paikka ei ole yksittäinen vikapiste.

Pitäisikö varmuuskopiot salata?

Kyllä, erityisesti omien palvelinten ulkopuolella säilytettävät kopiot. Resticin kaltaiset työkalut salaavat kaiken ennen kuin se lähtee palvelimelta.

Mistä tiedän, että varmuuskopioni toimivat?

Palauta ne. Luo aikataulun mukaan uusi palvelin varmuuskopiosta tai palauta tiedostot testihakemistoon ja tarkista, että sovellus oikeasti käynnistyy.

Käynnistä palvelin Frankfurtissa

Luo tili, lataa saldoa ja aja palvelinta alkaen €3.49 kuukaudessa. Maksat vain käyttämistäsi tunneista. Mittaamaton kaistanleveys kaikissa paketeissa.