Varmistaminen

Mehuwiki

Sisällysluettelo

Varmistaminen rsync:in avulla

Varmistaminen on luultavammin yksi tietojenkäsittelyn parhaiten tiedyistä asioista - ja luultavasti samalla yksi huonoimmin hoidetuista asioista. Varmistaminen kuuluu tiedoissa siihen kategoriaan, minkä jokainen koneen käyttäjä tietää, että pitäisi tehdä, mutta sen tekeminen jää aina jostain syystä tekemättä -- kunnes sitten kovalevy hajoaa tai jotain muuta vähemmän kriittistä tapahtuu.

Varmistamisen tyypit

Varmistamista on pääasiassa kahta eri tyyppiä, joko fyysisen rikkoutumisen varalta tai käyttäjän tekemältä virheeltä suojautuminen.

Fyysinen rikkoutuminen

Fyysiseltä rikkouitumiselta yleensä suojaudutaan ottamalla raa'asti vain kopio esimerkiksi kannettavan kovalevystä. Tarkoitukseen soveltuu parhaiten ulkoiset, FireWire liitännäiset kovalevyt, sillä niille varmistaminen tapahtuu nopeasti.

Käyttäjän virheiltä suojautuminen

Parhaimmat varmistukset suojaa myös käyttäjän virheiltä. Sen lisäksi, että ne ottavat kopion tärkeistä tiedostoista, ne myös pitävät kopiot tallessa, jolloin käyttäjän vahingossa poistama tiedosto löytyy nopeasti ja helposti varmistukselta.

Varmistaminen rsync:illä

rsync on näppärä apuohjelma, jolla saa helposti ja nopeasti tehtyä varmistuksia siten, että ohjelma pitää itse automaattisesti arkistoa poistetuista tiedostoista. Alla on kuvattu toimenpiteet, millä kannettavan tietokoneen saa varmistamaan GNU/Linux palvelimelle käyttäjän kotihakemiston helposti siten, että myös poistetut tiedostot säilytetään.

Palvelimen toimenpiteet

Jotta varmistaminen onnistuisi palvelimelle, on palvelimella oltava käynnissä rsync -daemon. Jos rsync -ohjelmaa ei ole palvelimella, on se sinne asennettava. Esimerkiksi Debian -järjestelmään asennus onnistuu seuraavalla komennolla:

apt-get install rsync

Tämän jälkeen on rsync -daemonia varten kirjoitettava /etc/rsyncd.conf -tiedosto, jossa määritetään rsync:in modulit (jota käytetään varmistuksessa). Alla on esimerkkitiedosto. Tiedosto käy melkein suoraan jokaiseen järjestelmään, mutta modulin hakemisto sekä verkko/koneet, mistä (hosts allow) on sallittu ottaa yhteys on vaihdettava omaan verkkoon soveltuviksi.

uid = root
gid = root
max connections = 10

[backups]
        path = /work/backups
        read only = no
        hosts alow = 192.168.1.0/24
        timeout = 600

Tämän jälkeen on rsync -daemon käynnistettävä. Debian järjestelmissä rsync daemon voidaan helposti käynnistää aina, kun järjestelmäkin käynnistyy muokkaamalla /etc/default/rsync -tiedostoa siten, että riviä RSYNC_ENABLE=false muutetaan muotoon RSYNC_ENABLE=true. Tämän jälkeen rsync daemon käynnistetään komennolla: /etc/init.d/rsync start

Asiakkaan toimenpiteet

Asiakkaan (eli se kone, mikä halutaan varmuuskopioida) päässä ainoa, mitä pitää tehdä on ajaa rsync -ohjelma halutussa kansiossa, mikä halutaan varmistaa palvelimelle. Varmistamisen helpottamiseksi on suositeltua tehdä skripti, joka antaa oikeat parametrit rsync -ohjelmalle, jolloin varmistus käy tarvittaessa vain esimerkiksi yhdellä hiiren tuplaklikkauksella. backup.zip on kirjoittamani backup -bash skripti, joka hoitaa varmistuksen automaattisesti. Tallenna tiedosto haluaamsi kansioon (esimerkisi kotihakemistosi bin/ -hakemistoon), anna suoritusoikeudet sille sekä lopuksi vielä muokkaat tiedoston alussa olevaa konfigurointiosaa omiin asetuksiisi sopivaksi.

backup.sh konfigurointi

Backup.sh -tiedoston alussa on konfigurointiosa, joka on esitettynä alla:

###
## Configuration
###
date=`date +%Y-%m-%d-%A-%H:%M`       # Date format to use in backup directories
server="192.168.1.29::backups"       # Server to backup to
name=`hostname -s`                   # Computer name in backup directories
backupdir="/archieve/$name/$date/"   # Backupdir to use                         
dir=$HOME                            # Directory to backup to server

Alla on dokumentointi kunkin muuttujan merkitys. Tärkeät ja olennaiset muuttujat on merkitty Olennainen -tekstillä.

date
Päivämäärän muoto, mitä käytetään arkistossa kansion nimenä, minne tallennetaan poistetut / muuttuneet tiedostot
server
Olennainen Palvelimen osoite ja moduli, minne varmistukset tallennetaan
name
Olennainen Hakemisto, minne kyseisen koneen varmistukset tallennetaan palvelimen moduulissa. Oletuksena käytetään koneen hostname:a; jos koneesi hostname muuttuu, muuta tämä rivi muotoon name="<tähän haluamasi nimi". Huomaa, että hipsu-merkit muuttuvat lainausmerkeiksi.
backupdir
Olennainen Hakemisto, minne muuttuneen / poistetut tiedostot tallennetaan. Nimi voi olla mitä vain, mutta on suositeltua käyttää $date -muuttujaa (kts. date -muuttujan kuvaus yllä) hakemiston osana, jolloin voit helposti selata muuttuneita tiedostoja päivien tarkkuudella.
dir
Olennainen Hakemisto, mikä varmistetaan palvelimelle. Oletuksena käyttäjän kotihakemisto.


Varmistuksen helpottaminen

Varmistamista pystyy helpottamaan jonkin verran, jos tekee skriptistä joko aliaksen tai muulla tavoin pikakuvakkeen työpöydällä, jolloin varmistaminen on nopeaa käynnistää aina tarvittaessa / muistaessaan. Itsellä on käytössä yksinkertainen AppleScript, joka on tallennettu ohjelmaksi (lähinnä AppleScriptin opettelemisen vuoksi). Alla AppleScript:

tell application "Terminal"
	 do script "sh $HOME/bin/backup && exit"
end tell

Muokkaa AppleScriptiä siten, että $HOME/bin/backup tilalle kirjoitat sen hakemiston, jonne tallensit backup.sh -tiedoston. Jos käytät AppleScriptiä, niin silloin backup.sh -tiedostoa ei tarvitse tehdä suoritettavaksi. Huomio, jos et tallentanut backup.sh -skriptiä kotihakemistoosi bin-hakemiston alle, niin silloin sinun on tarvetta ainoastaan muokata polkua. Jos tallensit tiedoston bin-hakemistoon, silloin ylläolevat koodit toimivat suoraan.

Varmistuksen automatisoiminen

Yksi tapa ratkaista varmistuksen automatisoiminen on hyödyntää sleepwatcher -ohjelmaa, jolla voidaan ajaa vapaavalintaista komentorivikoodia, kun kone herää unilta, tai menee unille.

Sleepwatcher-demoni tutkii sisään kirjautuneiden käyttäjien kotihakemistoista .wakeup ja .shutdown -nimiset tiedostot, ja ajaa niiden sisällön ihan normaaleina shelli-skripteinä. .wakeup -tiedostoon laitetaan esim. nano-editorilla sh $HOME/bin/backup , polku korjattuna tietysti, jolloin aina, kun kone herää unilta, ajetaan ym. komento. Tiedostolle .wakeup pitää antaa ajo-oikeudet chmodilla.

Automatisointi vain halutussa verkossa

Jotta automatisointia ei yritettäisi suorittaa, kun olet työpaikalla, koulussa tai kaverilla, täytyy ensin tutkia, ollaanko kotiverkossa joko käyttämällä alla kuvattua tapaa, tai katsomalla suoraan, mikä on wlan-tukiaseman SSID-tunnus. SSID-tunnus ei tosin ole yksilöivä tosin kuin esim. wlan-aseman mac-osoite tai muu tieto tai tietojen yhdistelmä, joten sen käyttöä kannattaa harkita. Nämä kaksi tapaa eivät välttämättä ole ainoita tapoja, mutta niitä käyttämällä on automatisointi saatu ainakin toteutettua.

Jos ei haluta käyttää SSID-tunnistusta, voidaan asentaa MacAutodetective.sh, johon täytetään oman ja mahdollisten muiden verkkojen identifioijat, kuten reitittimen mac-osoite tai reitittimen IP-osoite, tai wlan-tukiaseman SSID-nimi. Scripti on löydettävissä täältä. Sen käyttöä ja säätämistä ei tässä nyt opasteta, mutta se on vallan kätevä kapine sleepwatcherin kanssa säätää proxy- ym. asetuksia riippuen verkosta, missä ollaan, eikä sen ymmärtäminen ole hirveän vaikeaa, jos on joskus katsonut shelli-skriptin sisään.

Kun olet saanut automaattisen sijaintimäärittelyn toimimaan, voit hyödyntää tietoa varmistus-skriptissäsi siten, että lisäät varmistus-skriptin loppuun kohdan:

if [ "$location" = "koti" ]
then
 sh  $HOME/bin/backup
fi

Näin varmistus-skripti ajetaan vain, jos sijainniksi on määritelty "koti".

Automaattinen varmistus vain kerran päivässä

Jos päivittäinen varmuuskopiointi riittää, pitää vain ennen rsyncin ajamista backup-skriptissä tarkistaa, ettei kyseiselle päivälle jo ole olemassa varmuuskopiointia. Ratkaisussa esitetty skripti on tällä hetkellä suunniteltu ajettavaksi käsin, jolloin sen avulla pystyy myös tekemään useita varmuuskopiota / päivä, jolloin esimeriksi on mahdollista varmuuskopioida valokuvat ennen uuden arkistoohjelman testaamista jne.

Parannuksia & tulevaisuudennäkymiä

Automaattinen varmuuskopiointi on hankala asia, sillä sen kanssa täytyy ottaa huomioon monia seikkoja, lähinnä se, että varmuuskopiointi todellakin tapahtuu. Automaattinen varmistaminen tyydyttää helposti käyttäjän turvallisuuden tunteeseen ja jos varmistaminen pettääkin jostain syystä, niin sen havaitseminen voi olla vaikeaa, ellei siihen ole varautunut ja tarkkaile aktiivisesti varmistuksen onnistumista.

Ratkaisuja automatisointiin löytyy, joillakin ne jopa toimivat, mutta ne vaativat jonkin verran askartelua ja perehtyneisyyttä shell-ympäristöön. Pelkällä hiiren heiluttelulla tuskin pärjää, jos ei jokin kaupallinen ohjelmisto tarpeita täytä.

Pöytäkoneissa vastaavia automatisointiongelmia ei ole, sillä niissä kannattaa asettaa varmistusskriptin ajo launchd -ohjelman huoleksi siten, että se ajetaan aina joko työpäivän päätteeksi tai yöllä, riippuen siitä, miten konettaan käyttää ja pitääkö koneettaan päällä öisin.

Henkilökohtaiset työkalut

Creative Commons License