FreeBSD kézikönyv
Előző | Fejezet 18. Háttértárak | Következő

# 18.12. Alapvető tudnivalók a biztonsági mentésről

A dump(8), tar(1) és cpio(1) a három legfontosabb biztonsági mentésekkel kapcsolatos program.

## 18.12.1. Mentés és helyreállítás

A UNIX® típusú rendszerekben a biztonsági mentést hagyományosan a `dump` és `restore` programok végzik. A meghajtókat lemezblokkok összeségeként kezelik, az állományrendszerek által létrehozott állományok, linkek és könyvtárak szintje alatt. Eltérően más, biztonsági mentést végző szoftverektől, a `dump` az adott eszközön egy egész állományrendszert képes lementeni. Nem képes csak az állományrendszer vagy egy több állományrendszerre kiterjedő könyvtárszerkezet egy részét lementeni. A `dump` nem állományokat és könyvtárakat ír a szalagra, hanem nyers adatblokkokat, amelyek állományokat és könyvtárakat formáznak. A `restore` parancs az adatokat alapértelmezés szerint a `/tmp` könyvtárba tömöríti ki. Ha nem lenne elegendő helyünk a `/tmp` könyvtárban, akkor a `TMPDIR` környezeti változó átállításával ehelyett megadhatunk egy olyat, ahol már kellő mennyiségű terület áll rendelkezésre a `restore` akadálytalan lefutásához.

> Megjegyzés: Ha a `dump` parancsot a gyökér könyvtárban adjuk ki, akkor nem fogja lementeni a `/home` vagy `/usr` vagy bármilyen más könyvtárat, mivel ezek jellemző módon más állományrendszerek csatlakozási pontja vagy más állományrendszerekre mutató szimbolikus linkek.

A `dump` parancsnak vannak olyan rigolyái, amelyek még az AT&T UNIX 6. verziójából (1975 környékéről) maradtak vissza. Az alapértelmezett paraméterezése 9 sávos szalagokat feltételezi (6250 bpi), nem pedig a napjainkban elterjedt nagy írássűrűsségű (egészen 62 182 ftpi-s) adathordozókat. Ezek az alapértelmezések természetesen paranccsorból felülbírálhatóak, és így a manapság alkalmazott szalagos meghajtók teljes kapacitása is kihasználható vele.

Emellett az `rdump` és `rrestore` programok segítségével hálózaton keresztül is le tudjuk menteni az adatainkat egy másik számítógépre csatlakoztatott szalagos egységre. Mind a két program az rcmd(3) és a ruserok(3) parancsokat használja a távoli szalagos meghajtó eléréséhez. Az `rdump` és `rrestore` paramétereinek a távoli számítógép használatához kell illeszkedniük. Amikor egy FreeBSD rendszerű számítógépet az `rdump` paranccsal egy Sun rendszerű, `komodo` nevű számítógépre mentünk, amelyhez egy Exabyte szalagos meghajtó csatlakozik, akkor ezt a írjuk be:

    # /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1

Figyelem: az `.rhosts` állományon keresztül hitelesítésnek megvannak a maga biztonsági kockázatai. Ne felejtsük el felmérni ezt a saját környezetünkben sem.

A `dump` és `restore` parancsokat az `ssh` használatával még biztonságosabbá tehetjük.

Példa 18-1. A `dump` használata az ssh alkalmazással

    # /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
              célfelhasználó@cél.gép.hu dd of=/nagyállományok/dump-usr-l0.gz

Vagy az `RSH` környezeti változó megfelelő beállításával használhatjuk a `dump` beépített módszerét:

Példa 18-2. A `dump` használata az ssh alkalmazással, az `RSH` környezeti változó beállításával

    # RSH=/usr/bin/ssh /sbin/dump -0uan -f célfelhasználó@cél.gép.hu:/dev/sa0 /usr

## 18.12.2. `tar`

A tar(1) is az AT&T UNIX 6. verziójáig nyúlik vissza (tehát nagyjából 1975-ig). A `tar` az állományrendszerrel szoros együttműködésben dolgozik, állományokat és könyvtárakat ír a szalagra. A `tar` ugyan nem ismeri a cpio(1) által felkínált összes lehetőséget, de nincs is szüksége olyan szokatlan paranccsoros összekapcsolásokra, mint a `cpio` parancsnak.

A FreeBSD 5.3 vagy későbbi változataiban a GNU `tar` és az alapértelmezés szerinti `bsdtar` egyaránt elérhető. A GNU változat a `gtar` paranccsal hívható meg. Az `rdump` parancshoz hasonló felírásban képes kezelni a távoli eszközöket. Tehát így tudjuk használni a `tar` parancsot a `komodo` nevű Sun számítógép Exabíte szalagos meghajtójának elérésére:

    # /usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1

Ugyanez eltérhető a `bsdtar` használatával is, amikor az `rsh` programmal összekapcsolva küldünk át a távoli szalagos egységre.

    # tar cf - . | rsh hálózati-név dd of=szalagos-eszköz obs=20b

Ha a hálózaton keresztül mentés során fontos számunkra a biztonság, akkor az `rsh` parancs helyett az `ssh` parancsot használjuk.

## 18.12.3. `cpio`

A cpio(1) eredetileg a UNIX szalagos programjai és szalagos egységei között közvetített. A `cpio` parancs (többek közt) képes a byte-ok sorrendjének felcserélésére, több különböző archívum formátuma szerint írni és adatokat közvetíteni más programok felé. Ez utóbbi lehetősége miatt a `cpio` kíválóan alkalmas a telepítőeszközök számára. A `cpio` nem képes bejárni a könyvtárszerkezetet, és az állományok listáját a szabványos bemeneten keresztül kell megadni neki.

A `cpio` nem támogatja a biztonsági mentés átküldését a hálózaton. Programok összekapcsolásával és az `rsh` használatával tudunk adatokat küldeni távoli szalagos meghajtókra.

    # for f in könyvtár_lista; do
    find $f >> mentési.lista
    done
    # cpio -v -o --format=newc < backup.list | ssh felhasználó@gép "cat > mentőeszköz"

Ahol a `könyvtár_lista` a menteni kívánt könyvtárak listája, a `felhasználó`@`gép` a mentést végző gép felhasználójának és hálózati nevének együttese, valamint a `mentőeszköz`, ahova a mentés kerül (például `/dev/nsa0`).

## 18.12.4. `pax`

A pax(1) az IEEE/POSIX® válasza a `tar` és `cpio` programokra. Az évek során a `tar` és a `cpio` különböző változatai egy kissé inkompatibilissé váltak. Ezért a szabványosításuk kiharcolása helyett inkább a POSIX létrehozott egy új archiváló segédprogramot. A `pax` megpróbálja írni és olvasni a `cpio` és `tar` formátumok legtöbb változatát, valamint emellett további saját formátumokat is kezel. A parancskészlete inkább a `cpio` parancséra emlékeztet, mintsem a `tar` parancséra.

## 18.12.5. Amanda

Az Amanda (Advanced Maryland Network Disk Archiver) egy kliens-szerver alapú mentési rendszer, nem pedig egy önálló program. Az Amanda szerver menti tetszőleges számú számítógép adatát egyetlen szalagra, melyek az Amanda klienst futtatják és hálózaton keresztül hozzá csatlakoznak. A nagy mennyiségű és nagy kapacitású lemezekkel rendelkező rendszerekben közvetlenül a mentéshez szükséges idő nem áll rendelkezésre a feladat elvégzéséhez. Az Amanda viszont képes megoldani ezt a problémát. Az Amanda képes egy “saját lemez” használatával egyszerre több állományrendszerről is biztonsági mentést készíteni. Az Amanda “archívumkészleteket” hoz létre: az Amanda konfigurációs állományában megadott állományrendszerekről készít teljes mentést egy adott idő alatt egy adott mennyiségű szalagra. Az “archívumkészlet” ezenkívül még tartalmaz egy napi inkrementális (vagy különbözeti) mentést is minden egyes állományrendszerről. A sérült állományrendszerek visszaállításához mindig a legújabb teljes biztonsági mentésre és a hozzátartozó inkrementális mentésekre van szükségünk.

A konfigurációs állomány segítségével precíz irányítást gyakorolhatunk a létrehozott mentések és az Amanda által keltett hálózati forgalom felett. Az Amanda a fentiek közül bármelyik programmal képes az adatokat szalagra rögzíteni. Az Amanda portként vagy csomagként is elérhető, alapértelmezés szerint nem települ.

## 18.12.6. Ne csináljunk semmit

A “Ne csináljunk semmit” nem egy újabb számítógépes program, hanem egy igen gyakran alkalmazott mentési stratégia. Nem kell beruházni. Nem kell semmilyen biztonsági mentési rendet követni. Egyszerűen semmit se csinálunk. Ha véletlenül valami történne az adatainkkal, akkor csak mosolyogjunk és törődjünk bele!

Amennyiben az időnk és adataink keveset vagy éppen semmit se érnek, akkor a “Ne csináljunk semmit” az elérhető legjobb biztonsági mentési megoldás számítógépünk számára. De legyünk óvatosak, mert a UNIX egy igen hasznos eszköz, és fél éven belül könnyen úgy találhatjuk magunkat, hogy mégis csak vannak értékes adataink.

A “Ne csináljunk semmit” tökéletesen megfelelő mentési módszer a `/usr/obj` és a hozzá hasonló módon a számítógépen automatikusan generált könyvtárak és állományok esetében. Ugyanilyen példa lehetne a kézikönyv HTML vagy PostScript® változata. Ezek a formátumok ugyanis az SGML források alapján keletkeznek, így a HTML vagy PostScript állományok mentése nem életbevágó. Az SGML állományokat viszont már annál inkább mentsük!

## 18.12.7. Melyik a legjobb?

dump(8) Pont. Elizabeth D. Zwicky komolyan letesztelte az itt felsorolt összes programot. A UNIX állományrendszerek jellegzetességeinek és rajtuk az összes adatunk megőrzésének egyértelműen a `dump` felel meg a legjobban. Elizabeth a minden egyes program tesztjéhez olyan állományrendszereket hozott létre, amelyek rengeteg különféle szokatlan helyzetet tartalmaztak (valamint néhány nem annyira szokatlant). Az érintett jellegzetességek: lyukas állományok, lyukas állományok és egy halom nulla, állományok érdekes karakterekkel a nevükben, olvashatatlan és írhatatlan állományok, eszközök, a mentés közben méretüket változtató állományok, a mentés közben keletkező és megszűnő állományok és még sok minden más. Az eredményeit a LISA V-ben jelentette meg 1991. októberében. Lásd A biztonsági mentéshez és archiváláshoz használt programok tesztje (angolul).

## 18.12.8. Az adatok helyreállítása vészhelyzetben

### 18.12.8.1. A katasztrófa előtt

Csupán négy lépést kell megtennünk az esetleges katasztrófák bekövetkezésének esetére.

Először is két példányban nyomtassuk ki az egyes lemezek lemezcímkéjét (például a `bsdlabel da0 | lpr` paranccsal) valamint az állományrendszerek táblázatát (az `/etc/fstab` állományt) és az összes rendszerindításkor megjelenő üzenetet.

Másodsorban gondoskodjunk róla, hogy a helyreállító lemezek (`boot.flp` és `fixit.flp`) használatakor minden eszközünk látható. Ezt a legkönnyebben úgy tudjuk ellenőrizni, hogy újraindítjuk a gépet a lemezről és átnézzük a rendszerindítás során megjelenő üzeneteket. Ha szerepel bennük minden eszköz és a rendszer indulása után működőképesek, akkor jöhet a következő lépés.

Ellenkező esetben létre kell hoznunk két saját rendszerindító lemezt, amelyeken a rendszermag olyan változata található, amely képes csatlakoztatni az összes lemezünket és el tudja érni a szalagos egységünket. A floppykon a következőknek kell meglennie: `fdisk`, `bsdlabel`, `newfs`, `mount` és a program, amellyel a biztonsági mentéseinket kezeljük. Az összes program legyen statikusan linkelt. Ha a `dump` programot használjuk, akkor a lemezekről ne felejtsük le a `restore` programot sem.

A harmadik lépésben igyekezzünk minél gyakrabban szalagra menteni. Mindig gondoljuk arra, hogy a legutolsó mentés óta létrehozott változatásaink teljesen el fognak veszni. A mentéseket tartalmazó szalagokat tegyük írásvédetté.

A negyedik lépésben ellenőrizzük a helyreállító lemezeket (vagy a `boot.flp` és `fixit.flp` állományokat, vagy a második lépésben készített saját lemezeinket) és mentéseket tartalmazó szalagokat. Jegyezzük le az eljárást. Ezeket a jegyzeteket is rakjuk el rendszerindító lemezekkel, a kinyomtatott adatokkal és a mentéseket tartalmazó szalagokkal együtt. Ezek a jegyzetek megvédenek minket attól, hogy a helyreállítás közbeni kétségbeesésünkben nehogy véletlenül tönkretegyük a biztonsági mentéseinket. (Hogy miként is? Például ha a `tar xvf /dev/sa0` parancs helyett izgalmunkban a `tar cvf /dev/sa0` parancsot gépeljük be, akkor azzal felülírjuk a biztonsági mentéseinket).

A fokozott biztonság kedvéért minden alkalommal készítsünk rendszerindító lemezeket és legalább két mentést. Az egyiket valamilyen távoli helyen tároljuk. Ez a távoli hely NE ugyanannak az épületnek az alagsora legyen! Számos cég alaposan megtanulta ezt a szabályt a Világkereskedelmi központ tragédiája kapcsán. Ez a távoli hely számítógépeinkből és merevlemezes meghajtóinkól is fizikailag jól elkülöníthető, jelentős távolságban legyen.

Példa 18-3. A rendszerindító lemezek létrehozásához használható szkript

    #!/bin/sh
    #
    # Egy helyre&aacute;ll&iacute;t&oacute; lemez l&eacute;trehoz&aacute;sa.
    #
    # A lemez megform&aacute;z&aacute;sa.
    #
    PATH=/bin:/sbin:/usr/sbin:/usr/bin

    fdformat -q fd0
    if [ $? -ne 0 ]
    then
    	 echo "Rossz lemez, haszn&aacute;ljon m&aacute;sikat!"
    	 exit 1
    fi

    # A rendszerind&iacute;t&oacute; blokkok r&ouml;gz&iacute;t&eacute;se a lemezre.
    #
    bsdlabel -w -B /dev/fd0c fd1440

    #
    # Az egyetlen part&iacute;ci&oacute; l&eacute;trehoz&aacute;sa.
    #
    newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a

    #
    # A lemez csatlakoztat&aacute;sa.
    #
    mount /dev/fd0a /mnt

    #
    # A sz&uuml;ks&eacute;ges k&ouml;nyvt&aacute;rak l&eacute;trehoz&aacute;sa.
    #
    mkdir /mnt/dev
    mkdir /mnt/bin
    mkdir /mnt/sbin
    mkdir /mnt/etc
    mkdir /mnt/root
    mkdir /mnt/mnt			# a rendszerind&iacute;t&oacute; part&iacute;ci&oacute;hoz
    mkdir /mnt/tmp
    mkdir /mnt/var

    #
    # A k&ouml;nyvt&aacute;rak felt&ouml;lt&eacute;se.
    #
    if [ ! -x /sys/compile/MINI/kernel ]
    then
    	 cat << EOM
    Ha m&eacute;g nem l&eacute;tezne a MINI rendszermag, akkor hozzunk l&eacute;tre egyet.
    &Iacute;me hozz&aacute; egy minta konfigur&aacute;ci&oacute;s &aacute;llom&aacute;ny:
    #
    # MINI -- Egylemezes FreeBSD rendszermag.
    #
    machine         "i386"
    cpu             "I486_CPU"
    ident           MINI
    maxusers        5

    options         INET                    # a k&ouml;vetkez&#245;kh&ouml;z kell:  _tcp _icmpstat _ipstat
                                            #    _udpstat _tcpstat _udb
    options         FFS                     # Berkeley Fast File System
    options         FAT_CURSOR              # k&ouml;v&eacute;r kurzor a syscons vagy pccons eset&eacute;n
    options         SCSI_DELAY=15           # legy&uuml;nk pesszimist&aacute;k a SCSI eszk&ouml;z&ouml;kkel szemben
    options         NCONS=2                 # 1 virtu&aacute;lis konzol
    options         USERCONFIG              # a -c XXX seg&iacute;ts&eacute;g&eacute;vel megadhat&oacute; felhaszn&aacute;l&oacute;i konfigur&aacute;ci&oacute;

    config          kernel	root on da0 swap on da0 and da1 dumps on da0

    device          isa0
    device          pci0

    device          fdc0	at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
    device          fd0	at fdc0 drive 0

    device          ncr0

    device          scbus0

    device          sc0	at isa? port "IO_KBD" tty irq 1 vector scintr
    device          npx0	at isa? port "IO_NPX" irq 13 vector npxintr

    device          da0
    device          da1
    device          da2

    device          sa0

    pseudo-device   loop            # az INET-hez kell
    pseudo-device   gzip            # gzip-pel t&ouml;m&ouml;r&iacute;tett a.out v&eacute;grehajt&aacute;sa
    EOM
    	 exit 1
    fi

    cp -f /sys/compile/MINI/kernel /mnt

    gzip -c -best /sbin/init > /mnt/sbin/init
    gzip -c -best /sbin/fsck > /mnt/sbin/fsck
    gzip -c -best /sbin/mount > /mnt/sbin/mount
    gzip -c -best /sbin/halt > /mnt/sbin/halt
    gzip -c -best /sbin/restore > /mnt/sbin/restore

    gzip -c -best /bin/sh > /mnt/bin/sh
    gzip -c -best /bin/sync > /mnt/bin/sync

    cp /root/.profile /mnt/root

    chmod 500 /mnt/sbin/init
    chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
    chmod 555 /mnt/bin/sh /mnt/bin/sync
    chmod 6555 /mnt/sbin/restore

    #
    # Egy minim&aacute;lis &aacute;llom&aacute;nyrendszeri t&aacute;bl&aacute;zat l&eacute;trehoz&aacute;sa.
    #
    cat > /mnt/etc/fstab <<EOM
    /dev/fd0a    /    ufs    rw  1  1
    EOM

    #
    # Egy mini&aacute;lis jelsz&oacute; &aacute;llom&aacute;ny l&eacute;trehoz&aacute;sa.
    #
    cat > /mnt/etc/passwd <<EOM
    root:*:0:0:Charlie &:/root:/bin/sh
    EOM

    cat > /mnt/etc/master.passwd <<EOM
    root::0:0::0:0:Charlie &:/root:/bin/sh
    EOM

    chmod 600 /mnt/etc/master.passwd
    chmod 644 /mnt/etc/passwd
    /usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd

    #
    # A lemez lev&aacute;laszt&aacute;sa &eacute;s err&#245;l a felhaszn&aacute;l&oacute; &eacute;rtes&iacute;t&eacute;se.
    #
    /sbin/umount /mnt
    echo "A lemezt lev&aacute;lasztottam &eacute;s most m&aacute;r k&eacute;sz."

### 18.12.8.2. A katasztrófa után

Az alapvető kérdés: a hardver túlélte? Ha rendszeresen készítettünk biztonsági mentéseket, akkor a szoftverek miatt egyáltalán nem kell aggódnunk.

Ha a hardver megsérült, akkor a számítógép használatának újból megkezdése előtt javasolt cserélni a meghibásodott alkatrészeket.

Ha a hardverrel minden rendben találtunk, akkor nézzük meg a floppykat. Ha saját rendszerindító lemezt használunk, akkor indítsuk el egyfelhasználós módban (a `boot:` parancssornál írjuk be, hogy `-s`) és ugorjuk át a következő bekezdést.

Amennyiben viszont a `boot.flp` és `fixit.flp` állományok alapján készítettük a lemezeket, olvassunk tovább. Helyezzük a `boot.flp` tartalmú lemezt az elsődleges floppy meghajtóba és indítsuk el vele a számítógépet. Az eredeti telepítőmenü jelenik meg ezután a képernyőn. Innen válasszuk ki a `Fixit -- Repair mode with CDROM or floppy` (“Helyreállítás -- A rendszer helyreállítása CD-ről vagy floppyról”) menüpontot. Amikor kéri a telepítő, tegyük be a `fixit.flp` alapján készült lemezt. A `restore` és az összes többi számunkra fontos program a `/mnt2/rescue` könyvtárban található (vagy a FreeBSD 5.2-nél korábbi változatai esetén a `/mnt2/stand` könyvtárban).

Egyenként állítsuk vissza az egyes állományrendszereket.

A `mount` paranccsal próbáljuk meg csatlakoztatni az első lemezünk rendszerindító partícióját (például `mount /dev/da0a /mt`). Ha a lemezcímke megsérült, akkor `bsdlabel` alkalmazásával partícionáljuk újra a lemezt és címkézzük meg a korábban kinyomtatott címke adatainak megfelelően. A `newfs` segítségével újra hozzuk létre az állományrendszereket. Írható-olvasható módban csatlakoztassuk újra a floppy rendszerinító partícióját (`mount -u -o rw /mnt`). A biztonság mentést végző program és a biztonsági mentést tartalmazó szalagok használatával állítsuk helyre az állományrendszer tartalmát (például `restore vrf /dev/sa0`). Válasszuk le az állományrendszert (például `umount /mnt`). Mindegyik sérült állományrendszerre ismételjük a folyamatot.

Ahogy működőképessé vált a rendszerünk, mentsük az adatainkat új szalagokra. Akármi is okozta a rendszer összeomlását vagy az adatvesztést, ismét lecsaphat. Ha most áldozunk erre még egy órát, akkor azzal a későbbiekben számos kellemetlenségtől óvhatjuk meg magunkat.

Előző | Tartalom | Következő
Mentési stratégiák | Fel | Hálózat, memória és állomány alapú állományrendszerek

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.