Varmuuskopiointia

»Pessimistit ottaa backuppeja!»

Dump ja restore

Unixissa dump(8)/restore(8) pari on ollut suosittu datan varmistusmenetelmä jo putkiradioajoista lähtien. Dump nimensä mukaan dumppaa tiedostojärjestelmän kokonaisuudessaan tiedostoon, eikä poimi yksittäisiä tiedostoja kuten normaalisti tiedostoja varmistaessa tapana on. Dump-komennon ainoa heikkous FreeBSD:ssä lienee se, ettei se toimi luotettavasti journaloivalla UFS tiedostojärjestelmällä, johtuen dump komennon kyvyttömyydestä ottaa snapshot mikäli journal on käytössä. dump osaa kyllä dumpata mountatun UFS tiedostojärjestelmän sellaisenaan, mutta snapshot olisi tiedostojen eheyden kannalta ensiarvoisen tärkeää. Jos tiedostoja muutettaisiin kesken dumppaamisen olisi muuttuneiden tiedostojen sisältö dumpissa sekaisin ja hajallaan. Toisaalta journalista ei UFS:n tapauksessa saa juurikaan lisäarvoa paitsi tiedostojärjestelmän tarkistuksessa, koska tällöin ei koko tiedostojärjestelmää tarvitse fsck(8):lla käydä läpi. Kuitenkin palvelinkoneen tiedostojärjestelmät pitäisi aina tarkistaa kokoaisuudessaan koneen hallitsemattoman sammuttamisen jälkeen, joten journalin käyttämättä jättäminen saattaa olla jopa perusteltua. Joka tapauksessa journaloinnin poiskytkeminen vaatisi koneen boottaamisen single-user modeen, ja tähän olen liian laiska. Siispä dump saa nyt jäädä ja on käytettävä toistaiseksi jotain muuta vaihtoehtoa kunnes palvelimen boottaaminen on syystä tai toisesta ajankohtaista.

Rsync

Varmuuskopiointiin on unix-ympäristössä olemassa yleinen ja varsin tehokas työkalu, rsync(1). rsync:llä voidaan kopioida tiedostot yksitellen joko paikalliselle levylle tai etäkoneelle parempaan talteen. rsync osaa myös säilyttää tiedostojen attribuutit, poistaa vanhentuneet tiedostot jo otetuista varmuuskopioista ja käyttää differentiaalista kopiointia joka tekee siitä täydellisen välineen tiedostopohjaiseen datan varmistukseen. Lisäksi on mahdollista käyttää exclude-listoja joilla voidaan kopioinnista poissulkea satunnaista tauhkaa jota ei varmuuskopioon haluta, kuten esimerkiksi erilaisia cache tiedostoja tai /dev ja /tmp hakemistojen sisältö. Yleensä käyttöjärjestelmästä kopioiden ottaminen on turhaa työtä, koska käyttöjärjestelmän uudelleen asentaminen on monasti nopeampaa kuin varmuuskopioiden palauttaminen, mutta allekirjoittaneella on tapana kopioida talteen myös käyttis.

Alla on oma implementaationi varmuuskopioiden ottamiseen, hivenen riisuttuna tosin. Tämä yksinkertainen shell-scripti käyttää rsync:iä varsinaiseen datan kopiointiin, ja on tarkoitettu ainoastaan esimerkiksi. Scriptien lataaminen ja ajaminen suoraan internetistä on ehkä väsynein idea ikinä, mutta jos välttämättä haluat kokeilla, teet sen omalla vastuulla.

Kopiointiscriptille on myös määriteltävä include- ja exclude listat, eli mitä varmuuskopioidaan ja mitä ei:

 $ cat myserver.include.localhost
 $ cat myserver.exclude.localhost

Lisäksi scriptille tarvitaan kohteet jonne data kopioidaan ja millä käyttäjätunnuksella, tässä käytetään root käyttäjää kopioimaan data ensin paikalliselle levylle /storage/backup hakemistoon ja sieltä edelleen etäkoneelle samaiseen paikkaan:

 $ cat myserver.destination

Näin.

~ Jani Salonen, 1.11.2016