UNIX Datensicherung
Willemers Informatik-Ecke

Die Datensicherung ist die wichtigste Aufgabe des Administratoren. Die Verantwortung dafür kann ihm keiner abnehmen. Wenn die Datensicherung über einen längeren Zeitraum nicht klappt, ist das Unternehmen beim nächsten Plattencrash so gut wie konkurs.

Das Bandlaufwerk

Devices für Bandlaufwerke

Leider sind die Einträge für das Bandlaufwerk im Verzeichnis /dev nicht auf allen Systemen gleich und so ist es nicht ganz leicht, das Bandlaufwerk zu erkennen. Spätestens hier ist der Zeitpunkt, wo man nicht umhinkommt, in das Systemhandbuch zu schauen. Für jeden Bandtyp ist normalerweise ein eigenes Device eingerichtet. Hinzu kommt, dass für das nicht rückspulende Laufwerk ein weiterer Eintrag, üblicherweise mit einem n davor oder hinter den Namen gemacht wird. Hier zwei Beispiele für Namen von SCSI-Bandlaufwerken.

Band rückspulend Band ohne Spulen System
/dev/rmt/1 /dev/rmt/1n Sun Solaris
/dev/rmt/0mb /dev/rmt/0mnb HP-UX

Auch Bänder brauchen Performance

Bei einem Bandlaufwerk ist der Gesichtspunkt der Performance durchaus relevant. Die Datensicherung ist meist nicht in wenigen Minuten getan und setzt die Maschine während dieser Zeit weitgehend außer Gefecht. Darum sollten sowohl Laufwerk, Controller und Computer höchste Leistung bringen.

Steuerung eines Bandlaufwerkes: mt

Zur Ansteuerung des Bandlaufwerks wird das Programm mt verwendet. Als Bandlaufwerk verwendet mt den Inhalt der Umgebungsvariablen TAPE oder das Device /dev/tape, das üblicherweise ein symbolischer Link auf das Standardlaufwerk ist. Man kann das Laufwerk auch mit der Option -f direkt angeben.

mt -f /dev/Bandlaufwerk Befehl

Befehle für mt

Der Befehl mt status liefert gute Hinweise, ob das Laufwerk überhaupt ansprechbar ist. Der mt-Befehl retension spult das Band einmal nach vorn und wieder zurück. Soll nur zurückgespult werden, gibt es den Befehl rewind.

mt-Kommando Wirkung
status testet, ob das Bandlaufwerk ansprechbar ist
rewind spult das Band zurück
retension spult das Band komplett nach vorn und wieder zurück
erase löscht das einliegende Band

Unter MacOS X ist mt nicht verfügbar.

dump

dump ist ein recht altes Werkzeug in der UNIX Umgebung. Es ist speziell auf Datensicherung ausgelegt. Vor allem ist es in der Lage, komplette Dateisysteme zu sichern und inkrementelle Datensicherungsstrategien zu unterstützen.

Unter Solaris heißt der Befehl dump ufsdump. Der dort existierende Befehl dump hat eine andere Aufgabe.

Nach dem Befehl dump wird mit einer Ziffer der Level der Sicherung bestimmt. Es folgen weitere Optionen.

Wird die Option u verwendet, wird in der Datei dumpdates im Verzeichnis /var/adm oder /etc hinterlegt, wann welches Dateisystem gesichert worden ist.

Die Option f erwartet einen weiteren Parameter, der den Ort des Bandes beschreibt. Hier kann ein anderes als das Standardband angegeben werden. Es kann durch die Notation host:/dev/tape auch eine Sicherung über das Netz durchgeführt werden.

Der letzte Parameter gibt die zu sichernde Partition an. In einigen Versionen von dump funktioniert alternativ die Angabe des mount points.

Mit dem folgenden Sicherungslauf wird die Partition /dev/vg00/lvol3 auf das Standardband gesichert.

hpsrv# dump 0 /dev/vg00/lvol3
/var/adm/dumpdates: No such file or directory
  DUMP: Date of this level 0 dump: Sun Dec 30 15:27:44 2001
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /dev/vg00/rlvol3 (/home) to /dev/rmt/0m
  DUMP: This is an HP long file name filesystem
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 1001 tape blocks on 0.03 tape(s).
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: DUMP: 1001 tape blocks on 1 tape(s)

DUMP: DUMP: /dev/vg00/rlvol3 has 0 inodes with unsaved ... DUMP: DUMP IS DONE DUMP: Tape rewinding hpsrv#

Sollen mehrere Dateisysteme auf ein Band geschrieben werden, muss das Device des Bandgerätes so gewählt werden, dass es das Rückspulen nicht durchführt.

Daten zurück: restore

Der Befehl restore holt gesicherte Datenbestände zurück.

Komplette Rücksicherung

Die Option -r sorgt für das komplette Einspielen der gesicherten Daten. Zuvor wird das Dateisystem, auf das die Daten sollen, neu mit mkfs erzeugt und per mount eingehängt. Mit cd wechselt man in das Wurzelverzeichnis des Dateisystems und ruft restore mit der Option -r auf. Bei einer inkrementellen Datensicherung sind auch die neuesten Bänder der jeweiligen Levels einzuspielen.

Interaktives Zurückholen

Mit der Option -i können interaktiv einzelne Dateien zurückgeholt werden. restore holt den Katalog vom Band und setzt den Benutzer auf einen eigenen Prompt, in dem er die Standardbefehle ls, pwd und cd verwenden kann, als sei er auf einem Dateisystem. Mit dem Befehl add Datei wird die genannte Datei in die Liste derer aufgenommen, die wieder zurückgeholt werden soll. Mit dem Befehl extract startet das Zurückholen der Daten.

Im Beispiel wird die Datei hello.cpp aus dem Heimatverzeichnis zurückgeholt. Zunächst wechselt man in das Verzeichnis, wo die gesicherten Dateien später hingelegt werden sollen. In diesem Fall wurde ein Verzeichnis restore unter /var angelegt.

hpsrv# cd /var
hpsrv# mkdir restore
hpsrv# cd restore
hpsrv# restore i
restore > cd arnold
restore > ls
./arnold:
 .cshrc       .history     .profile     .sh_history   bad.tif
 .exrc        .login       .rhosts      a.out         hello.cpp

restore > add hello.cpp restore > ls ./arnold: .cshrc .history .profile .sh_history bad.tif .exrc .login .rhosts a.out *hello.cpp

restore > extract You have not read any tapes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: Specify next volume #: 1 set owner/mode for '.'? [yn] n restore > quit hpsrv# ls arnold hpsrv# pwd /var/restore hpsrv# ll arnold total 2 -rw-rw-rw- 1 arnold users 45 Dec 20 21:43 hello.cpp hpsrv#

Wie zu sehen, werden die Dateien in einem Abbild der gesicherten Strukturen auf dem aktuellen Pfad abgelegt. Die Datei hello.cpp muss also noch in das Originalverzeichnis umkopiert werden.

Beispiel für eine Fernsicherung mit dump

Mit dump kann man den eigenen Datenbestand auch über Netz auf dem Bandgerät einer anderen Maschine sichern. Der rsh-Dämon (siehe S. \gpSeitenverweis{rshd}) muss auf der Zielmaschine verfügbar und korrekt installiert sein. Bei einer Fernsicherung wird das Programm rmt auf dem entfernten Rechner benötigt, das von dump in /etc/dump gesucht wird. Auf der HP-UX-Maschine, die in diesem Fall als Zielmaschine dienen soll, befindet sich rmt aber im Verzeichnis /usr/sbin. Durch die Environmentvariable RMT kann der Pfad allerdings auf der Quellmaschine korrigiert werden.


gaston# RMT=/usr/sbin/rmt
gaston# export RMT
gaston# dump -0 -f hpsrv:/dev/rmt/0mb /dev/hda7
  DUMP: Connection to hpsrv established.
  DUMP: Date of this level 0 dump: Mon Feb  4 12:14:18 2002
  DUMP: Dumping /dev/hda7 (/home) to /dev/rmt/0mb on host hpsrv
  DUMP: Added inode 7 to exclude list (resize inode)
  DUMP: Label: none
  DUMP: mapping (Pass I) [regular files]
  DUMP: mapping (Pass II) [directories]
  DUMP: estimated 2598351 tape blocks.
  DUMP: Volume 1 started with block 1 at: Mon Feb  4 12:14:20 2002
  DUMP: dumping (Pass III) [directories]
  DUMP: dumping (Pass IV) [regular files]
  DUMP: 1.65% done at 142 kB/s, finished in 4:58
...
  DUMP: 75.61% done at 176 kB/s, finished in 0:59
  DUMP: write: No space left on device
  DUMP: End of tape detected
  DUMP: write: No space left on device
  DUMP: write: No space left on device
  DUMP: Closing /dev/rmt/0mb
  DUMP: Volume 1 completed at: Mon Feb  4 15:21:28 2002
  DUMP: Volume 1 1970350 tape blocks (1924.17MB)
  DUMP: Volume 1 took 3:07:08
  DUMP: Volume 1 transfer rate: 175 kB/s
  DUMP: Change Volumes: Mount volume #2
  DUMP: Is the new volume mounted and ready to go?: ("yes" or "no") yes
  DUMP: Volume 2 started with block 1970321 at: Mon Feb  4 16:57:21 2002
  DUMP: Volume 2 begins with blocks from inode 611797
  DUMP: 75.83% done at 39 kB/s, finished in 0:59
...
  DUMP: 98.40% done at 177 kB/s, finished in 0:03
  DUMP: 100.00% done at 177 kB/s, finished in 0:00
  DUMP: Closing /dev/rmt/0mb
  DUMP: Volume 2 completed at: Mon Feb  4 18:00:53 2002
  DUMP: Volume 2 668010 tape blocks (652.35MB)
  DUMP: Volume 2 took 1:03:32
  DUMP: Volume 2 transfer rate: 175 kB/s
  DUMP: 2638330 tape blocks (2576.49MB) on 2 volume(s)
  DUMP: finished in 14988 seconds, throughput 176 kBytes/sec
  DUMP: Date of this level 0 dump: Mon Feb  4 12:14:18 2002
  DUMP: Date this dump completed:  Mon Feb  4 18:00:53 2002
  DUMP: Average transfer rate: 175 kB/s
  DUMP: DUMP IS DONE
gaston#

Interessant an diesem dump ist, dass das Band zu Ende war. Daraufhin wird ein neues Medium angefordert und auf diesem weiter geschrieben. dump fordert also automatisch zum Medienwechsel auf, wenn das Band voll ist.

Stärken und Schwächen

Die Stärken und Schwächen von dump liegen darin, dass es Dateisysteme sichert. Man ist also nicht frei in der Wahl der Verzeichnisse, die man sichern will. Andererseits werden komplette Dateisysteme so wieder hergestellt, wie sie auf der Platte lagen. Soll allerdings neben den im Beispiel verwendeten Heimatverzeichnissen noch das Spoolverzeichnis des Mailsystems gesichert werden, ist dump überfordert. Es sei denn, das Spoolverzeichnis liegt ebenfalls auf einem eigenen Dateisystem. Sehr elegant ist die interaktive Rücksicherung einzelner Dateien.

tar (tape archiver)

Trotz seines Namens kann tar nicht nur mit dem Band, sondern auch mit Disketten, Wechselmedien und sogar Dateien als Ziel arbeiten. Der Vorteil von tar ist seine weite Verbreitung und Verfügbarkeit. tar wurde im Laufe der Jahre weiterentwickelt. Vorteile von tar:

Nachteile von tar:

Zusammensetzung des tar-Kommandos

Operation

Nach dem Befehl tar bestimmt der erste Buchstabe, welche Operation ausgeführt wird. Hier muss einer der Buchstaben c, x oder t auftauchen. Dabei bedeutet:

Zeichen Bedeutung
c Erzeuge ein Archiv
x Entpacke ein Archiv
t Lese das Inhaltsverzeichnis eines Archivs

Bei den eigenlichen Optionen sind die folgenden von Bedeutung:

f sicherungsdatei
Mit f wird angegeben, dass die Sicherung in eine Datei gehen soll. Als Dateiname wird dann die Sicherungsdatei oder das Device angegeben, auf das gesichert werden soll.

v
zeigt alle gesicherten Dateien an. Daraus lässt sich leicht ein Sicherungsprotokoll erstellen.

z oder Z
gibt an, dass das Archiv gepackt wird. Dadurch passt natürlich mehr auf das Band. Bei schwachen Maschinen ist allerdings zu prüfen, ob die Komprimierung den Datenstrom abreißen läßt. Das hat bei Bändern den Effekt, dass die Datensicherung um ein vielfaches länger dauert.

M
arbeitet mit Medienwechsel. Ist beim Sichern das Medium voll, wird der Benutzer aufgefordert, das Medium zu wechseln und Return zu drücken. Beim Rücksichern werden die erforderlichen Medien automatisch angefordert.

Als Beispiel soll hier das Verzeichnis /home gesichert werden. Ohne weitere Angabe verwendet tar das Standardbandgerät.

# cd /home
# tar cv .
a ./tacoss symbolic link to /users/tacoss
a ./willemer symbolic link to /users/willemer
a ./notes/.sh_history 4 blocks
a ./notes/.profile 1 blocks
a ./notes/server symbolic link to /opt/lotus/bin/server
a ./notes/.Xpdefaults 2 blocks
a ./notes/~console.tmp 1 blocks
a ./rossow/.sh_history 1 blocks
a ./rossow/.rhosts 1 blocks
a ./arnold/.cshrc 2 blocks
a ./arnold/.exrc 1 blocks
a ./arnold/.login 1 blocks
a ./arnold/.profile 1 blocks
a ./arnold/.sh_history 5 blocks
a ./arnold/.rhosts 1 blocks
a ./arnold/bad.tif 1813 blocks
a ./arnold/a.out 41 blocks
a ./arnold/hello.cpp 1 blocks
a ./arnold/.history 1 blocks
#

Absoluter oder relativer Pfad?

Die Beobachtung der gesicherten Dateien zeigt, dass diese Version von tar relative Pfade abspeichert. Manche Versionen speichern immer den absoluten Pfad. Sollen die Dateien beim Restaurieren an eine andere Stelle kommen, empfielt es sich, die Option A zu probieren. Sie entfernt bei solchen Systemen normalerweise den führenden Schrägstrich.

tar xv holt alles zurück

Das Zurückholen aller Dateien ist relativ einfach. Man wechselt per cd in das Zielverzeichnis und ruft tar mit der Option x auf. Wer sehen möchte, was zurückgeholt wird, gibt noch zusätzlich ein v an.

Sollen dagegen bestimmte Dateien zurückgeholt werden, ist das etwas komplizierter. Hinter tar xv kann man die gewünschten Dateien angeben, die man wiederhaben möchte. Allerdings wünscht sich tar den kompletten Pfad, so wie er beim Sichern abgestellt wurde. Will man also die Datei arnold/hello.cpp zurückholen, lautet der Befehl:

# tar xv ./arnold/hello.cpp
x ./arnold/hello.cpp, 64 bytes, 1 tape blocks
#

Dagegen scheitert der Versuch, als Parameter arnold/hello.cpp anzugeben, obwohl das inhaltlich das Gleiche ist. Unter diesem Namen ist es eben nicht abgestellt worden. Sämtliche Versuche, diese Version von tar dazu zu bewegen, mit Wildcards zu hantieren scheitern. Das einzige Zugeständnis ist, dass man den Pfadnamen ./arnold verwenden kann und alle darunter liegenden Dateien und Verzeichnisse restauriert werden.

# tar xv ./arnold
x ./arnold/.cshrc, 814 bytes, 2 tape blocks
x ./arnold/.exrc, 347 bytes, 1 tape blocks
x ./arnold/.login, 341 bytes, 1 tape blocks
x ./arnold/.profile, 446 bytes, 1 tape blocks
x ./arnold/.sh_history, 2538 bytes, 5 tape blocks
x ./arnold/.rhosts, 7 bytes, 1 tape blocks
x ./arnold/bad.tif, 928109 bytes, 1813 tape blocks
x ./arnold/a.out, 20524 bytes, 41 tape blocks
x ./arnold/hello.cpp, 64 bytes, 1 tape blocks
x ./arnold/.history, 212 bytes, 1 tape blocks
#

Man ahnt es schon, der nackte Parameter arnold ohne ./ scheitert. Das besonders Ärgerliche an solch scheiternden Versuchen ist, dass man sie erst feststellt, wenn das ganze Band durchsucht wurde, was einige Zeit dauern kann.

Einige Versionen von tar können mehr. Das betrifft insbesondere die GNU-Version. Hier ein Beispiel:

gaston> tar xvf /dev/fd0 "*syslog.tex"
unprog/syslog.tex
gaston>

GNU tar hat keinerlei Probleme mit Wildcards. Wer oft mit tar arbeitet und häufiger einzelne Dateien zurückholen muss, sollte prüfen, ob es für das System ein GNU tar gibt.

Fazit: Gerade das Zurückholen einzelner Dateien ist nicht trivial und von der Implementierung des tar abhängig. Hier sollte man sich vor dem Fall der Fälle aus den Manpages und dem Systemhandbuch informieren und am besten einmal ausprobieren.

Die Steuerungsdatei /etc/default/tar

Die tar-Implementation von SCO und SINIX verwendet eine Steuerungsdatei namens /etc/default/tar. Dort sind die verschiedenen Diskettenvarianten und einige Bandgeräte mit Kapazität und Device durchnummeriert aufgezählt. Die entsprechende Zahl wird dann im tar-Aufruf verwendet. Der Vorteil dieses Verfahrens ist, dass tar die Größe seiner Bänder kennt.

Unterschiede im Syntax

Nehmen wir als Beispiel an, es soll das Verzeichnis /usr/bin mit allen Unterverzeichnissen gesichert und wieder zurückgeladen werden. Zunächst wird mit dem Befehl cd / in das Rootverzeichnis gewechselt. Dann wird folgender Befehl ausgegeben.

Sichern Laden
Linux tar cf /dev/tape /usr/bin tar xf /dev/tape
SCO tar c8 /usr/bin tar x8

Netzwerksicherung per tar

Netzsicherung über den rshd

Nicht immer dokumentiert, aber meist implementiert ist, dass tar in der Lage ist, Dateien über das Netzwerk zu sichern. Dabei wird tar als Bandlaufwerk das Device einer anderen Maschine als Ziel der Datensicherung angegeben. Dabei wird der Hostname gefolgt von einem Doppelpunkt und dem dortigen Device als Ziel verwendet. Diese Namensgebung für Netzobjekte folgt der des rcp (remote copy siehe S.\ \gpSeitenverweis{rcp}). Die Nomenklatur kommt nicht von ungefähr, da beide über eine Pipe über den rshd (siehe S.\ \gpSeitenverweis{rshd}) implementiert sind.

tar cf idefix:/dev/tape /usr/bin

Das lokale Verzeichnis /usr/bin wird auf dem Band der Maschine idefix gesichert. Da die Sicherung über den rshd erfolgt, muss natürlich auch die Berechtigungskonfiguration über die .rhosts stimmen.

cpio

cpio ist ein weiteres Programm zur Datensicherung. Es ist sehr flexibel, was die Bestimmung der Dateien angeht, die zu sichern sind und welche Dateien wieder zurückzuholen sind. cpio hat einen etwas ungewohnten Syntax, da es die zu sichernden Dateien dem Standardeingabekanal entnimmt.

Sichert nicht die Dateieigenschaften

cpio behält in der Standardversion weder Uhrzeit, noch Eigner oder Rechte der Dateien. Per Option kann allerdings die gesicherte Datei das Originalzeitpunkt nach der Rücksicherung zurück bekommen. Die special files lassen sich nur mit Administratorrechten und entsprechend geschalteter Option sichern.

Sichern, Anschauen und Zurückholen

Daten sichern

cpio entnimmt die Namen der zu sichernden Dateien dem stdin. Dabei muss jeder Dateiname in einer eigenen Zeile stehen. Damit steht der Befehl cpio typischerweise an zweiter Stelle in einer Pipe und hat beim Sichern die Option -o. An erster Stelle kann jeder beliebiger UNIX-Befehl stehen, der eine Dateiliste erzeugt. Das kann ein ls sein, dann werden die Dateien des aktuellen Verzeichnisses gesichert, allerdings nicht dessen Unterverzeichnisse. Will man alle Dateien im Unterverzeichnis sichern, stellt man den Befehl find voran. Durch dessen flexible Möglichkeiten kann sehr fein selektiert werden, welche Dateien gesichert werden sollen. Bei ganz besonders kuriosen Dateizusammenstellungen, kann man die Dateiliste auch in eine Datei stellen und ein cat darauf machen.

Das Ergebnis, also die Ausgabe des cpio geht auf stdout und wird durch Ausgabenumlenkung (>) auf das Sicherungsdevice oder die Archivdatei umgeleitet. Wieder soll das Verzeichnis /home mit allen Unterverzeichnissen gesichert werden.

# cd /home
# find . -print | cpio -o >/dev/rmt/0mb
(Using tape drive with immediate report mode enabled (reel #1).)
1870 blocks
#

Dieser Befehl sichert alle Dateien unterhalb des aktuellen Verzeichnisses auf das Bandgerät. Nun soll betrachtet werden, was alles auf dem Band vorhanden ist. Dazu wird die Option -it verwendet. Das Sicherungsgerät wird als Standardeingabe verwendet.

# cpio -it </dev/rmt/0mb
.
lost+found
tacoss
willemer
notes
notes/.sh_history
notes/.profile
notes/server
notes/.Xpdefaults
notes/~console.tmp
rossow
rossow/.sh_history
rossow/.rhosts
arnold
arnold/.cshrc
arnold/.exrc
arnold/.login
arnold/.profile
arnold/.sh_history
arnold/.rhosts
arnold/bad.tif
arnold/a.out
arnold/hello.cpp
arnold/.history
1870 blocks
#

Um die ganze Sicherung zurückzuholen, wird fast die gleiche Befehlskombination verwendet, wie beim Auslesen des Verzeichnisses. -i bewirkt das Lesen der Sicherung und -d bewirkt, dass auch Verzeichnisse erstellt werden. Das Auslesen geschieht im aktuellen Verzeichnis. Vor dem Auspacken muss also in das Zielverzeichnis gewechselt werden.

# cpio -id </dev/rmt/0mb
1870 blocks
#

In der letzten Übung wird nun als einzige Datei die hello.cpp vom Band geholt. An dieser Stelle zeigt cpio seine große Flexibilität. In Anschluss an die Option wird in Hochkommata das Muster der gesuchten Dateienamen angegeben. Dabei können Wildcards verwendet werden.

# rm -r *
# cpio -id '*hello*' </dev/rmt/0mb
1870 blocks
# ll
total 2
drwxrwxrwx   2 arnold   users       1024 Dec 31 01:46 arnold
# ll arnold
total 2
-rw-rw-rw-   1 arnold   users         64 Dec 31 01:46 hello.cpp
#

Wichtige Optionen

Je nach Version des cpio gibt es unterschiedliche Optionen. Genaueres findet sich in den Manpages. Die hier genannten Optionen dürften in jeder Version zu finden sein.

m
behalte die Modifikationszeit des gesicherten Originals bei. Wirkt nicht auf Verzeichnisse.

d
erzeuge beim Rücksichern die notwendigen Verzeichnisse.

u
Ersetze durch die Rücksicherung auch eine neuere Datei als die, die im Archiv steht.

x
Sichere auch special files.

Medien kopieren: dd

dd ist ein Kopierprogramm, das vom >>Input File<< (if) ins >>Output File<< (of) schreibt. Dabei kann In- und Output sowohl eine Datei als auch ein Device sein. Auf diese Weise kann dd eine Diskette auf eine Datei abziehen, um sie hinterher wieder auf eine Diskette ziehen.

dd if=/dev/fd0 of=dumpfile
dd of=/dev/fd0 if=dumpfile

Disketten fremder Systeme kopieren

dd muss das Format, mit dem das Medium beschrieben wurde, nicht unbedingt beherrschen, es muss die Diskette nur direkt lesen können. So kann man sogar Mac-Disketten auf einer Linux-Maschine kopieren. Da die von dd erzeugten Datei (hier dumpfile) eine Datei ist wie jede andere, kann man sie per E-Mail verschicken oder auf CD brennen und kann jederzeit wieder eine Diskette daraus machen. Dies ist besonders bei bootfähigen Disketten interessant.

Andere Sicherungstools: Amanda

Das Open Source Projekt AMANDA (Advanced Maryland Automatic Network Disk Archiver) ist ein Werkzeug zum Sichern kompletter Netzwerkumgebungen. Im Zentrum einer solchen Architektur steht der Back­up­ser­ver, der die Backupmedien hat. Er zieht von den angeschlossenen Clients die zu sichernden Images über das Netzwerk, parkt sie gegebenenfalls auf lokalen Platten zwischen und schafft sie anschließend auf Band. Amanda hat kein eigenes Datensicherungsformat, sondern verwendet die maschineneigenen Datensicherungsmethoden.1)

Amanda kommt als Quelltextdistribution und muss selbst übersetzt werden. Nach dem Auspacken wird mit dem beigefügten configure die Software an die Maschine angepasst. Dabei muss auch der Benutzer und die Gruppe angegeben werden. Soll dies unter dem Benutzer amanda und der Gruppe dasi erfolgen, wird folgender Aufruf abgesetzt:

hpsrv# ./configure --with-user=amanda --with-group=dasi

Anschließend werden die Quellen übersetzt und die erzeugten Binaries installiert. Dazu braucht die Zielmaschine mindestens einen C-Compiler sowie lex und yacc, bzw. deren GNU Varianten flex und bison.

hpsrv# make
hpsrv# make install

amanda.conf

Standardmäßig sucht Amanda ihre Konfigurationsdatei amanda.conf im Verzeichnis /var/lib/amanda/DailySet1. S.u.S.E legt die Konfiguration in das Verzeichnis /etc/amanda/DailySet1. Es gibt als gute Vorlage eine Beispielkonfiguration. Dabei sind einige Einträge anzupassen. In erster Linie ist da das Bandlaufwerk einzutragen. Hier wird mit dem Parameter >>holdingdisk<< eingestellt, wenn die Platte als Zwischenspeicher verwendet werden soll. Schließlich wird beispielsweise comp-root-tar als Art der Datensicherung definiert. In der Definition wird sich wiederum auf root-tar bezogen. Eine Vielzahl von Beispielen ist in der Datei schon vorhanden, so dass Sie wahrscheinlich sogar etwas Passendes finden.

tapetype HP-DAT
tapedev "/dev/rtm/0mnb" # war: "/dev/null"

holdingdisk hd1 { directory "/u/amanda" use 1000 Mb }

define dumptype root-tar { global program "GNUTAR" comment "root partitions dumped with tar" compress none index exclude list "/usr/local/lib/amanda/exclude.gtar" priority low }

define dumptype comp-root-tar { root-tar comment "Root partitions with compression" compress client fast }

.amandahosts

Die Datei /var/lib/amanda/.amandahosts enthält eine Liste der Anwender und ihre Hosts, die Zugriffsrechte haben. Beispiel:

gaston     amanda
gaston     root
hpsrv      amanda
hpsrv      root

Im gleichen Verzeichnis befindet sich eine Datei disklist, die alle zu sichernden Platten und die Maschinen angibt, von denen sie kommen. Der erste Eintrag betrifft die Maschine sol. Das Plattendevice heißt /dev/sd0a. Der Sicherungstyp >>comp-root<< wird in der amanda.conf festgelegt. Die zweite Zeile sichert die Partition /dev/hda5 nach dem gleichen Verfahren.

sol sd0a comp-root-tar
gaston hda5 comp-root-tar

Im Client Server Betrieb müssen natürlich die passenden Einträge ind die /etc/services gemacht werden.

amanda          10080/tcp      # Amanda backup services
amanda          10080/udp      # Amanda backup services

Und eines Eintrages in die /etc/inetd.conf bedarf es auch.

amanda dgram udp wait amanda /usr/lib/amanda/amandad amandad

Für Rechner mit MS-Windows gibt es keinen Client für Amanda. Man kann sie sichern, indem man sie per SAMBA ins Netz holt und von der entsprechenden UNIX Maschine aus sichert.

Nach der erfolgreichen Konfiguration wird das ganze Gebilde geprüft. Dazu melden Sie sich als amanda an und verwenden den Befehl amcheck, der als Parameter die Konfiguration haben muss. Im Beispiel ist das DailySet1. Mit dem Befehl amlabel wird dem Band ein Name vergeben. Mit dem Befehl amdump erfolgt die eigentliche Datensicherung. Normalerweise wird man diesen Befehl in der crontab unterbringen.

amrecover

Die Datenrückholung erfolgt mit dem Befehl amrecover. Das Verfahren läuft dann so ab, wie beim recover vom dump bereits beschrieben.

Die Heimatseite von Amanda bietet nicht nur Möglichkeiten zum Download der Software, sondern auch eine >>FAQ-O-Matic<< und ausführliche Dokumentation.

Quelle: http://www.amanda.org

Beispiel für eine Sicherung auf CD-RW

Für die Sicherung der Daten meiner Workstation auf CD-RW habe ich mir einen kleinen Skript geschrieben, der ein Verzeichnis mit meinen Daten abzieht.

Konfigurationsvariablen SAVEDIR und STARTDIR

Die beiden Variablen SAVEDIR und STARTDIR müssen auf den jeweiligen Bedarf angepasst werden. SAVEDIR ist das Verzeichnis, das alle sichernswerten Daten enthält. Ich habe zu diesem Zweck ein Verzeichnis namens my im Heimatverzeichnis angelegt. Soll eine neue CD-RW bearbeitet werden, wird der Skript mit dem Parameter >>new<< aufgerufen. Dann wird sie gelöscht. Ansonsten gibt es keine Abhängigkeiten vom Medium. Es können also auch einfache CD-Rohlinge benutzt werden.

Mehrere Sicherungen auf einer CD

Da ich nicht so viele Daten zu sichern habe, um eine komplette CD zu füllen, schreibt der Skript mehrere Sicherungen auf eine CD und verwendet dafür Multisession. Um die verschiedenen Sicherungsstände leichter erkennen zu können, wird ein Link angelegt, dessen Name aus dem aktuellen Datum generiert wird. Der Link zeigt auf das SAVEDIR. Um den Link mitsichern zu können, braucht man ein leeres Verzeichnis, in das der Link gelegt wird und das komplett gesichert werden kann. Dies wird in STARTDIR abgelegt. Vorsicht! Der Skript löscht den Inhalt beim Start, um Reste alter Sicherungen zu beseitigen.

#!/bin/sh
# cddasi: Datensicherung auf CD-R und CD-RW
# (C) Arnold Willemer 5.1.2002
#
# Das Verzeichnis STARTDIR ist das Arbeitsverzeichnis des
# Skripts.
# !!!!!!  $STARTDIR wird zu Anfang vollständig gelöscht  !!!!!!
# Hier wird ein Link auf das SAVEDIR gelegt und mit dem
# aktuellen Datum versehen. Auf diese Weise wird bei jeder
# Session ein neues Verzeichnis erzeugt, dessen Datum im 
# Verzeichnisnamen steht.

STARTDIR=/home/arnold/bin/savedir SAVEDIR=/home/arnold/my SPEED=2 DEV=0,3,0

# Räume das Startverzeichnis und lege den Arbeitslink an cd $STARTDIR rm * ln -s $SAVEDIR `date +"%Y%m%d"`

# Auswertung des ersten Parameters case "$1" in "blank" ) mkisofs -J -R -f -o image.iso $STARTDIR cdrecord -v speed=$SPEED dev=$DEV -blank=fast -multi image.iso ;; "new" ) mkisofs -J -R -f -o image.iso $STARTDIR cdrecord -v speed=$SPEED dev=$DEV -multi image.iso ;; "last" ) TRACKPOS=`cdrecord -msinfo dev=0,3,0` mkisofs -J -R -f -o image.iso -C $TRACKPOS -M $DEV $STARTDIR cdrecord -v speed=$SPEED dev=$DEV image.iso ;; * ) TRACKPOS=`cdrecord -msinfo dev=0,3,0` mkisofs -J -R -f -o image.iso -C $TRACKPOS -M $DEV $STARTDIR cdrecord -v speed=$SPEED dev=$DEV -multi image.iso esac

Zu guter Letzt muss natürlich noch vor dem Start das Device für den Brenner, der bei mir SCSI-ID 3 hat in der Variablen DEV angepasst werden. In der Variablen SPEED wird festgelegt, wie schnell gebrannt wird.

Der Skript cddasi akzeptiert alternativ einen Parameter.

blank
Wird eine CD-RW eingelegt, die gelöscht werden soll, muss dieser Parameter gewählt werden.
new
Eine neue CD-R oder eine neue CD-RW, die noch nicht beschrieben war, wurde eingelegt. In beiden Fällen wird nicht versucht, die TRACKPOS zu bestimmen, was zu einem Abbruch führen würde.
last
Gleich ob CD-R oder CD-RW, im letzten Sichern sollte die CD abgeschlossen werden. Nach der Verwendung von last kann nicht mehr darauf gebrannt werden.
*
Kein Parameter oder irgend etwas anderes bewirkt ein normales Sichern. Von der CD wird ermittelt, an welche Position gebrannt werden muss und es wird per multi auf die CD-R oder CD-RW gebrannt.

1 vgl. Nemeth, Evi / Snyder, Garth / Seebass, Scott / Hein, Trent R.: UNIX Systemverwaltung. Markt+Technik - Prentice Hall, München, 2001. S. 257--273. sowie Schmidt, Fabian: Backup ohne Klicks. Linux Magazin 05/2002. S. 52--54.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru?