USB-varmuuskopio

Kohteesta Linux.fi
Siirry navigaatioon Siirry hakuun

Tarkoituksena on toteuttaa helppo ja yksinkertainen tapa tehdä ajoittain varmuuskopio kotihakemistoista ja muista datahakemistoista USB-levylle. USB-levyä ei ole tarkoitus pitää kytkettynä jatkuvasti ja koska käytössä on hidas USB1.1-väylä, kestää kopion siirtämisessä USB-levylle pitkä aika. Varmuuskopion tekemisen pitäisi olla niinkin yksinkertaista, kuin virran kytkeminen USB-levyyn.

Menetelmä[muokkaa]

  • UDEV-säännöllä luodaan /dev -hakemistoon laitetiedostolinkki tietyllä nimellä kun varmuuskopiointiin käytettävä USB-levy liitetään koneeseen
  • Varmuuskopio tehdään backup2l-ohjelmalla UDEV-säännöllä luodun laitenimen avulla
  • Varmuuskopiotyön tuloksista lähetetään sähköposti ylläpitäjälle

USB-levyn kytkeminen[muokkaa]

Varmuuskopiointiin on varattu erityinen USB-levy. Ytimen udev-järjestelmä luo laitetiedoston /dev-hakemistoon kun USB-laite kytketään. USB-levyt emuloivat scsi-levyä ja saavat nimiä /dev/sda1, /dev/sda2 jne. Lisätietoja löytyy artikkelista Laitetiedostot.

Jos koneeseen kytketään useampia levyjä, ei tietyn levyn laitetiedoston nimestä voi olla varma. Tästä syystä tehdään udev-säännöllä varmuuskopiointiin käytettävän levyn laitetiedostoon viittaava linkki, joka saa aina saman nimen riippumatta siitä, monentenako USB-levynä varmuuskopiolevy kytketään. Tällä tavalla koneessa voi käyttää USB-muistitikkuja ja muita USB-levyjä. Varmuuskopiointi onnistuu, vaikka varmuuskopiolevy ei aina saisikaan samaa /dev/sda*-nimeä.

Seuraava koodinpätkä on tiedostossa /etc/udev/rules.d/010_usblevy.rules. Tiedoston nimen edessä on numero 010, koska hakemiston tiedoston suoritetaan järjestyksessä. Numeron avulla tiedosto suoritetaan ensimmäisten joukossa ja mahdolliset aiemmat säännöt eivät pääse vaikuttamaan lopputulokseen.

KERNEL=="sd[a-z][1-9]", SUBSYSTEMS=="usb", ATTRS{serial}=="00000xxxxxxx",
SYMLINK+="usblevy", GROUP="plugdev", RUN+="/root/backup2l.sh"

HUOM! Edellisen on oltava yhdellä rivillä!

Ensimmäisellä Kernel-lausekkeella kohdistetaan sääntö tilanteisiin, joissa ydin tunnistaa kytkettävän laitteen olevan sd-alkuinen järjestysnumeron 1-9 saanut levy. Toisella, subsystems-lausekkeella kohdistetaan sääntö koskemaan ainoastaan USB-väylään kytkettyjä laitteita. attrs-lausekkeella kohdistetaan sääntö tiettyyn varmistuslevyyn sen sarjanumeron perusteella. On oleellista muistaa, että ehtolausekkeissa parametrien yhtäläisyyttä kuvataan kahdella yhtäkuin-merkillä. Levyn sarjanumeron saa selville komennolla

udevinfo -a -p /sys/block/sdb | grep serial

Jos levy näkyy laitetiedostona /dev/sdb.

Symlink-lausekkeella luodaan linkki varsinaiseen laitetiedostoon. Tämän linkin avulla laitteelle saadaan vakionimi riippumatta siitä, montako usb-levyä tietokoneeseen on aiemmin kytketty. GROUP-lausekkeella määritellään linkin käyttäjäryhmä. RUN-lausekkeella udev käynnistää skriptin, jonka avulla varmistus käynnistetään.

Udev-säännössä käynnistettävä skriptin ajo ei saa kestää pitkään. udev-järjestelmä keskeytyy skriptin ajamisen ajaksi. Jos säännöllä ajetaan pitkään istunnon varaavia ohjelmia, uusien laitetapahtumien rekisteröinti viivästyy. Varmuuskopiointi on pitkä prosessi, joten prosessin käynnistämiseen käytetään väliskriptiä, joka irrottaa varmuuskopiointiprosessin udevin käynnistämästä komentotulkkiympäristöstä.

Komennolla

udevinfo -e

saa lisävalaistusta ja vinkkejä udev-sääntölausekkeiden kirjoittamiseen.

/etc/fstab -tiedostoon on seuraavaksi lisättävä rivi

/dev/usblevy	/media/usblevy	auto	rw,user,noauto	0	0

Tällä rivillä kerrotaan, että udev:n tekemä laitetiedoston linkki liitetään tiedostojärjestelmässä paikkaan /media/usblevy. Varmuuskopio-ohjelma liittää laitteen aloittaessaan varmuuskopion tekemistä.

Varmuuskopio-ohjelman käynnistäminen[muokkaa]

/root-hakemistossa on seuraava skripti backup2l.sh, jolla varmuuskopiointiohjelma käynnistetään:

#!/bin/bash
[ -e /root/.eibackup2l ] && echo ei saa tehda kopiota | [[mail]] -s backup2l user && exit;
[[nice|/usr/bin/nice]] -n 19 /usr/sbin/backup2l -b 2> /dev/null > /dev/null \
| mail -s backup2l user &

Skriptin ensimmäisellä rivillä on varmistus, joka mahdollistaa varmuuskopioinnin estämisen lisäämällä /root-hakemistoon .eibackup2l-nimisen tiedoston. Tällä voi ehkäistä varmuuskopioinnin käynnistymisen esimerkiksi tilanteessa, jossa tietoja pitäisi palauttaa. Tilanteesta lähetetään user-nimiselle käyttäjälle sähköpostiviesti.

Skriptin toisella rivillä varsinainen varmuuskopio-ohjelma käynnistetään. Nice-komennolla lasketaan varmuuskopio-ohjelman prioriteettia. Ohjelman virheilmoitukset on ohjattu /dev/null:iin, kuten myös vakiosyöte. Vakiosyötteen ohjaaminen on tärkeää, muuten varmuuskopioprosessia ei saa irrotettua alkuperäisestä komentotulkista ja udev keskeyttää lyhyen aikavalvonnan jälkeen skriptin suorituksen. Varmuuskopio-ohjelman vakiotulostus ohjataan sähköpostiohjelmalle.

Backup2l-ohjelmalle on kerrottu sen omassa määritystiedostossa /etc/backup2l.conf mistä hakemistoista varmuuskopio tehdään. Samassa tiedostossa kerrotaan missä itse varmuuskopiolaitteen kohdehakemisto sijaitsee (/media/usblevy/backup2l).

Katso myös[muokkaa]

Aiheesta muualla[muokkaa]