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
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
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
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:
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
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.
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
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
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:
[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:
[Unit]
Description=Nightly restic backup
[Timer]
OnCalendar=*-*-* 03:30
RandomizedDelaySec=15m
Persistent=true
[Install]
WantedBy=timers.target
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
/etcasetuksia varten.- Sovelluksen koodi ja ladatut tiedostot:
/var/www,/srv,/opttai 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ä:
- Koko palvelin: luo uusi palvelin varmuuskopiosta tai tilannevedoksesta, käynnistä se testinimellä ja tarkista, että sovellus toimii.
- Tiedostot: palauta väliaikaiseen hakemistoon ja vertaa.
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'
- 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.