FreeBSD handboek
Terug | Hoofdstuk 18. Opslag | Volgende

# 18.12. Back-upbeginselen

De drie grote back-upprogramma's zijn dump(8), tar(1) en cpio(1).

## 18.12.1. Dump en Restore

De traditionele back-upprogramma's voor UNIX® zijn `dump` en `restore`. Deze zien het station als een verzameling van schijfblokken, onder de abstracties van bestanden, koppelingen en mappen die door de bestandssystemen worden aangemaakt. In tegenstelling tot andere back-upprogramma's, verzorgt `dump` een back-up van een compleet bestandssysteem op een apparaat. Het is niet in staat om slechts een gedeelte van een bestandssysteem of een mapstructuur die meer dan één bestandssysteem in beslag neemt te back-uppen. Het commando `dump` schrijft geen bestanden en mappen naar band, maar de rauwe gegevensblokken waaruit de bestanden en mappen bestaan. Wanneer het gebruikt wordt om gegevens te extraheren, slaat `restore` tijdelijke bestanden standaard op in `/tmp/` -- als u werkt vanaf een herstelschijf met een kleine map `/tmp`, moet u wellicht de omgevingsvariabele `TMPDIR` op een map met meer vrije ruimte instellen zodat de restore kan slagen.

> Opmerking: Indien `dump` op een hoofdmap wordt gebruikt, wordt er geen back-up gemaakt van `/home` , `/usr` of van de vele andere mappen, aangezien dit typisch koppelpunten voor andere bestandssystemen of symbolische koppelingen binnen deze bestandssystemen zijn.

`dump` bevat eigenaardigheden die uit de begintijd in Versie 6 van AT&T UNIX (circa 1975) zijn overgebleven. De standaardparameters zijn geschikt voor banden met 9 sporen (6.250 bpi), niet voor de media met hoge dichtheid die vandaag beschikbaar zijn (tot 62.182 ftpi). Deze standaardwaarden dienen op de opdrachtregel overschreven te worden om de capaciteit van de huidige bandstations te benutten.

Het is ook mogelijk om gegevens met `rdump` en `rrestore` over een netwerk naar een bandstation dat aan een andere computer gekoppeld is te back-uppen. Beide programma's maken gebruik van rcmd(3) en ruserok(3) om toegang tot het bandstation op afstand te krijgen. De gebruiker die de back-up uitvoert moet vermeld staat in het bestand `.rhosts` op de computer op afstand. De argumenten die aan `rdump` en `rrestore` gegeven worden dienen geschikt te zijn voor gebruik op de computer op afstand. Als `rdump` gebruikt wordt om een dump te maken van een FreeBSD computer naar een Exabyte-bandstation dat met een Sun-computer genaamd `komodo` verbonden is:

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

Let op: er kleven veiligheidsbezwaren aan het toestaan van authenticatie met `.rhosts`. De situatie dient goed geëvalueerd te worden.

Het is ook mogelijk om `dump` en `restore` op een veiligere manier via `ssh` te gebruiken.

Voorbeeld 18-1. Het gebruik van `dump` via ssh

    # /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
          doelgebruiker@doelmachine.voorbeeld.com dd of=/mijngrotebestanden/dump-usr-10.gz

Ook kan de ingebouwde manier van `dump` gebruikt worden, door de omgevingsvariabele `RSH` in te stellen:

Voorbeeld 18-2. Het gebruik van `dump` via ssh met ingestelde `RSH`

    # RSH=/usr/bin/ssh /sbin/dump -0uan -f doelgebruiker@doelmachine.voorbeeld.com:/dev/sa0 /usr

## 18.12.2. `tar`

tar(1) stamt ook uit de tijd van Versie 6 van AT&T UNIX (circa 1975). Het werkt samen met het bestandssysteem. `tar` schrijft bestanden en mappen naar band en ondersteunt niet het volledige scala aan opties dat beschikbaar is met cpio(1), maar `tar` heeft niet de ongebruikelijke opdrachtpijplijn nodig die `cpio` gebruikt.

Op FreeBSD 5.3 en later zijn zowel GNU `tar` als de standaard `bsdtar` beschikbaar. De GNU-versie kan aangeroepen worden met `gtar`. Het ondersteunt apparaten op afstand waarbij gebruik wordt gemaakt van dezelfde syntaxis als die van `rdump`. Om `tar` toe te passen op een Exabyte-bandstation die met een Sun genaamd `komodo` verbonden is:

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

Hetzelfde kan bereikt worden met `bsdtar` door gebruik te maken van een pijplijn en `rsh` om gegevens naar een bandstation op afstand te zenden:

    # tar cf - . | rsh hostnaam dd of=bandapparaat obs=20b

Indien de veiligheid van back-uppen over een netwerk een punt is, dient gebruik te worden gemaakt van het commando `ssh` en niet van `rsh`.

## 18.12.3. `cpio`

cpio(1) is het originele UNIX bandprogramma voor magnetische media om bestanden uit te wisselen. `cpio` heeft opties (naast vele anderen) om byte-swapping uit te voeren, een aantal verschillende archiefformaten te schrijven en de gegevens over een pijplijn naar andere programma's te voeren. Deze laatste optie maakt `cpio` een uitstekende keuze voor installatiemedia. `cpio` weet niet hoe het door een mapstructuur moet lopen. Er dient een lijst met bestanden door `stdin` aangeleverd te worden.

`cpio` biedt geen ondersteuning voor back-ups over het netwerk. Er kan gebruik worden gemaakt van een pijplijn en `rsh` om de gegevens naar een banddrive op afstand te sturen.

    # for f in maplijst;  do
    find $f >> back-up.lijst
    done
    # cpio -v -o --format=newc < back-up.lijst | ssh gebruiker@host "cat > back-upapparaat"

Hier is `maplijst` een lijst van de mappen waarvan een back-up gemaakt dient te worden, `gebruiker`@`host` de gebruiker/hostnaam-combinatie die de back-ups uitvoert, en `back-upapparaat` het apparaat waar de back-ups naar toe geschreven te worden (bijvoorbeeld `/dev/nsa0`).

## 18.12.4. `pax`

pax(1) is het antwoord van IEEE en POSIX® op `tar` en `cpio`. In de loop der jaren zijn de verscheidene versies van `tar` en `cpio` licht incompatibel geworden. Dus in plaats van dit uit te vechten en ze volledig te standaardiseren, heeft POSIX een nieuw archiveringsprogramma gemaakt. `pax` poogt om veel van de verscheidene formaten van `cpio` en `tar` te lezen en te schrijven, met daarbij nog nieuwe, eigen formaten. De commandoverzameling lijkt meer op die van `cpio` dan op die van `tar`.

## 18.12.5. Amanda

Amanda (Advanced Maryland Network Disk Archiver) is een client/server-back-upsysteem, in plaats van een enkel programma. Een Amanda server back-upt elk aantal computers dat een Amanda client en een netwerkverbinding met de Amanda server heeft naar een enkel bandstation. Een veelvoorkomend probleem bij bedrijven met een groot aantal schijven is dat de tijd die nodig is om de gegevens direct naar band te back-uppen langer is dan de tijd die voor de taak gereserveerd is. Amanda lost dit probleem op. Amanda kan gebruik maken van een “tussenschijf” om verschillende bestandssystemen tegelijkertijd te back-uppen. Amanda maakt “archiefverzamelingen” aan, een groep banden die gedurende een tijd gebruikt wordt om volledige back-ups te maken van alle bestandssystemen die in het instellingenbestand van Amanda vermeld staan. De “archiefverzameling” bevat ook incrementele (of differentiële) back-ups van alle bestandssystemen. Voor het herstellen van een beschadigd bestandssysteem zijn de meest recente volledige back-up en de incrementele back-ups nodig.

Het instellingenbestand biedt verfijnde controle over de back-ups en het netwerkverkeer door Amanda. Amanda kan elk bovenstaand back-upprogramma gebruiken om de gegevens naar de band te schijven. Amanda is òf als port òf als package beschikbaar.

## 18.12.6. Nietsdoen

“Nietsdoen” is geen computerprogramma, maar de de meest gebruikte back-upstrategie. Er zijn geen initiële kosten. Er is geen back-upschema om te volgen. Zeg gewoon nee. Als er iets met gegevens gebeurt, lach erom en leef ermee!

Als tijd en gegevens weinig tot niets waard zijn, is “Nietsdoen” het meest geschikte back-upprogramma. Maar wees bedacht, UNIX is een nuttig stuk gereedschap en er is zo maar binnen zes maanden een verzameling bestanden die wèl van waarde is.

“Nietsdoen” is de juiste back-upmethode voor `/usr/obj` en andere mapstructuren die zo opnieuw aangemaakt kunnen worden. Een voorbeeld zijn de bestanden waaruit de HTML- of PostScript® versie van dit Handboek bestaan. Deze documentformaten zijn vanuit SGML-invoerbestanden aangemaakt. Het back-uppen van de HTML- of PostScript bestanden is niet nodig. Van de SGML-bestanden dient regelmatig een back-up gemaakt te worden.

## 18.12.7. Welk back-upprogramma is het beste?

dump(8). Punt uit.. Elizabeth D. Zwicky heeft stresstesten op alle hierboven besproken back-upprogramma's uitgevoerd. De heldere keuze voor het behouden van alle gegevens en alle eigenaardigheden van UNIX bestandssystemen is `dump`. Elizabeth heeft bestandssystemen aangemaakt met een grote verscheidenheid aan ongewone omstandigheden (en enkele minder ongebruikelijke) en heeft elk programma getest door een back-up van die bestandssystemen uit te voeren en ze te herstellen. De eigenaardigheden omvatten bestanden met gaten, bestanden met gaten en een blok nullen, bestanden met vreemde tekens in hun namen, onleesbare en onschrijfbare bestanden, apparaten, bestanden waarvan de grootte verandert tijdens het back-uppen, bestanden die aangemaakt/verwijderd worden tijdens het back-uppen en meer. Ze presenteerde de resultaten op LISA V in oktober 1991. Zie torture-testing Backup and Archive Programs.

## 18.12.8. Noodterugzetprocedure

### 18.12.8.1. Vóór de ramp

Er zijn slechts vier stappen om te volgen bij het voorbereiden op elke ramp die voor kan komen.

Het schijflabel van elke schijf dient afgedrukt te worden (bijvoorbeeld met `bsdlabel da0 | lpr`), de bestandssysteemtabel (`/etc/fstab`) en alle opstartboodschappen, alles in tweevoud.

De opstart- en fixit-diskettes (`boot.flp` en `fixit.flp`) moeten alle gewenste apparaten bevatten. De gemakkelijkste manier om dit te controleren is om de machine opnieuw op te starten met de opstartdiskette in het diskettestation en de opstartmeldingen te controleren. Als alle apparaten gemeld en functioneel zijn, kan stap drie uitgevoerd worden.

In het andere geval dienen twee eigen opstartbare diskettes aangemaakt te worden die een kernel bevatten die alle gewenste schijven kan aankoppelen en toegang heeft tot het bandstation. Deze diskettes dienen het volgende te bevatten: `fdisk`, `newfs`, `mount` en het gebruikte back-upprogramma. Deze programma's dienen statisch gelinkt te worden. Als `dump` gebruikt wordt, moet de diskette `restore` bevatten.

Ten derde dienen regelmatig back-upbanden aangemaakt te worden. Alle veranderingen die na de laatste back-up zijn gemaakt kunnen onherroepelijk verloren zijn gegaan. De back-upbanden dienen beveiligd te worden tegen overschrijven.

Ten vierde dienen de diskettes (òfwel `boot.flp` en `fixit.flp`, òfwel de twee eigen diskettes die in stap twee zijn aangemaakt) en de back-upbanden getest te worden. Van de handelingen dienen aantekeningen gemaakt te worden. De aantekeningen, de opstartbare diskette, de afdrukken en de back-upbanden moeten gezamenlijk bewaard te worden. Tijdens het herstellen kunnen de notities ervoor zorgen dat de back-upbanden vernietigd worden. Hoe? In plaats van `tar xvf /dev/sa0` kan per ongeluk `tar cvf /dev/sa0` worden ingetypt, waardoor de back-upband overschreven wordt.

Als extra veiligheidsmaatregel dienen opstartbare diskettes en telkens twee back-upbanden gemaakt te worden. Eén van deze banden dient op een plaats op afstand bewaard te worden. Zo'n plaats is NIET de kelder van het zelfde kantoorgebouw. Een aantal bedrijven in het World Trade Center heeft deze les op de harde manier geleerd. Zo'n plaats dient fysiek gescheiden te zijn van de computers en de schijven door een significante afstand.

Voorbeeld 18-3. Script voor het aanmaken van de opstartdiskette

    #!/bin/sh
    #
    # maak een hersteldiskette aan
    #
    # formatteer de diskette
    #
    PATH=/bin:/sbin:/usr/sbin:/usr/bin

    fdformat -q fd0
    if [ $? -ne 0 ]
    then
         echo "Slechte diskette, gebruik alstublieft een nieuwe"
         exit 1
    fi

    # plaats opstartblokken op de diskette
    #
    bsdlabel -w -B /dev/fd0c fd1440

    #
    # newfs de enige echte partitie
    #
    newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a

    #
    # koppel de nieuwe diskette aan
    #
    mount /dev/fd0a /mnt

    #
    # maak de benodigde mappen aan
    #
    mkdir /mnt/dev
    mkdir /mnt/bin
    mkdir /mnt/sbin
    mkdir /mnt/etc
    mkdir /mnt/root
    mkdir /mnt/mnt          # voor de rootpartitie
    mkdir /mnt/tmp
    mkdir /mnt/var

    #
    # vul de mappen in
    #
    if [ ! -x /sys/compile/MINI/kernel ]
    then
         cat << EOM
    De MINI kernel bestaat niet, maak er alstublieft een aan.
    Hier volgt een voorbeeld van een configuratiebestand:
    #
    # MINI -- Een kernel om &os; op een schijf te krijgen.
    #
    machine         "i386"
    cpu             "I486_CPU"
    ident           MINI
    maxusers        5

    options         INET                    # nodig voor _tcp _icmpstat _ipstat
                                            #            _udpstat _tcpstat _udb
    options         FFS                     #Berkeley Fast File System
    options         FAT_CURSOR              #blokcursor in syscons of pccons
    options         SCSI_DELAY=15           #Wees pessimistisch over SCSI-apparaat Jan
    options         NCONS=2                 #1 virtuele console
    options         USERCONFIG              #Sta gebruikersinstellingen toe met -c XXX

    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            # nodig voor INET
    pseudo-device   gzip            # Voer ge-gzip-te a.out's uit.
    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

    #
    # maak een minimale bestandssysteemtabel aan
    #
    cat > /mnt/etc/fstab <<EOM
    /dev/fd0a    /    ufs    rw  1  1
    EOM

    #
    # maak een minimaal passwd bestand aan
    #
    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

    #
    # koppel de diskette af en informeer de gebruiker
    #
    /sbin/umount /mnt
    echo "De diskette is ontkoppeld en is nu klaar."

### 18.12.8.2. Na de ramp

De hamvraag is: heeft de hardware het overleefd? Er zijn regelmatig back-ups gemaakt, dus zorgen over de software zijn niet nodig.

Indien hardware beschadigd is, dienen kapotte onderdelen vervangen te worden voordat gepoogd wordt om een computer te gebruiken.

Indien de hardware in orde is, dienen de diskettes gecontroleerd te worden. Als een eigen opstartdiskette gebruikt wordt, start in enkele-gebruiker-modus op (type op de opstartprompt `boot:` `-s` in). Sla dan de volgende paragraaf over.

Lees verder als de diskettes `boot.flp` en `fixit.flp` gebruikt worden. Steek de diskette `boot.flp` als eerste in het diskettestation en start de computer op. Het originele installatiemenu wordt op het scherm getoond. Kies de optie `Fixit--Repair mode with CDROM or floppy`. Steek de diskette `fixit.flp` in als erom gevraagd wordt. `restore` en de andere benodigde programma's staan in `/mnt2/rescue` (`/mnt/stand` voor FreeBSD ouder dan versie 5.2).

Herstel elk bestandssysteem apart.

Probeer de rootpartitie van de eerste schijf aan te koppelen (bijvoorbeeld `mount /dev/da0a /mnt`). Als het schijflabel beschadigd is, gebruik dan `bsdlabel` om de schijf opnieuw te partitioneren en te labelen zodat deze overeenkomt met het afgedrukte en bewaarde label. Gebruik voor het opnieuw aanmaken van de bestandssystemen `newfs`. Koppel de rootpartitie van de diskette opnieuw aan voor lezen en schrijven (`mount -u -o rw /mnt`). Gebruik voor het herstellen van de gegevens van dit bestandssysteem het back-upprogramma en de back-upbanden (bijvoorbeeld `restore vrf /dev/sa0`). Koppel nu het bestandssysteem af (bijvoorbeeld `umount /mnt`). Herhaal dit voor elk beschadigd bestandssysteem.

Back-up de gegevens naar nieuwe banden als het systeem weer draait. De omstandigheden die verantwoordelijk waren voor de crash of het gegevensverlies kunnen weer voorkomen. Nu een extra uur investeren, kan later grote zorgen besparen.

Terug | Begin | Volgende
Back-up strategieën | Omhoog | Netwerk-, geheugen-, en bestandsgebaseerde bestandssystemen

Deze en andere documenten kunnen worden gedownload van ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Lees voor vragen over FreeBSD de documentatie alvorens contact te zoeken <questions@FreeBSD.org>.
Vragen over deze documentatie kunnen per e-mail naar <doc@FreeBSD.org>.