Streamer Grundlagen Ein gute Alternative zu den Brennern sind DAT-Streamer, die eine Kapazität von 12 GByte pro Band besitzen. Da ein derartiger Streamer auch selber noch komprimiert, sind effektive Kapazitäten bis zu 20 GByte möglich. Professionelle Tools Für die Sicherung mit Streamern gibt es mehrere professionelle Tools, die im schulischen Umfeld auch kostenlos nutzbar sind. Diese Pakete erlauben auch eine Sicherung auf zentralen Streamer-Servern, dazu besteht die Software aus einem Server- und einem Client-Programm. Arkeia Dieses kommerzielle Tool ist in der SuSE-Distribution enthalten. Das Paket ist bisher für die Nutzung mit maximal zwei Linux-Clients kostenlos nutzbar. Es verfügt über eine grafische Oberfläche und eine sehr ausführliche Anleitung. Im Web sind viele Beschreibungen hierzu zu finden. Amanda Der "Advanced Maryland Automatic Network Disk Archiver" ist ein Open-Source Projekt, welches kaum Wünsche offen lässt. Es handelt sich um ein Kommando-Zeilen Tool, dessen Anleitung etwas knapp ausgefallen ist. Von den Funktionen her kann sich Amanda mit Arkeia messen. Es geht auch mit tar &Co Der Nachteil der professionellen Systeme besteht darin, dass man sehr viel Vorbereitung benötigt. Man muss sich geradezu einen Backup-Plan machen und auch die Bänder dazu passend vorbereiten. Wer seine Sicherungen nicht entsprechend planen kann oder möchte, der kann auch mit den Systemprogrammen arbeiten, die bei allen Distributionen vorhanden sind. tar (aus dem Paket tar) ist das Programm zum Lesen und Schreiben der Daten auf den Streamer mt (aus dem Paket cpio) bzw. mtst (aus dem Paket mt_st) dient u.a. zum Spulen des Bandes buffer (aus dem Paket buffer) puffert den Schreibstrom, so dass das Band gleichmäßig läuft. Wenn die Pakete noch nicht installiert sind, so sollte dies zuerst nachgeholt werden. Geräte Was man noch wissen muss ist das Gerät, auf welches man Schreiben möchte. Für den (ersten) DAT-Streamer gibt es normalerweise zwei Devices: /dev/nst0 und /dev/st0 Dabei ist st0 ein Rewinding-Device, welches nach jedem Schreibvorgang das Band automatisch zurückspult. Das ist aber unpraktisch, wenn man mehrere Sicherungen (Archive) hintereinander auf das Band schreiben möchte, dann nimmt man besser das Non-Rewinding-Device nst0. Wenn nur ein einziger Streamer vorliegt, dann kann man einen Link /dev/tape anlegen, über den die Software dann den Streamer automatisch, d.h. ohne weitere Device-Angabe findet: ln -s /dev/nst0 /dev/tape mt und mtst Das Kommando mt kontrolliert die Operationen eines Magnetbandes. Man braucht es u.a. um das Band zurück oder an bestimmte Stellen spulen zu können. Der normale Aufruf ist mt -f <device> <operation> Falls ein passender Link auf das Tape-Device vorhanden ist kann man die Device-Angabe weglassen und einfach schreiben: mt <operation> Wichtige Operationen sind: Operation rewind tell status Bedeutung Spult das Band an den Anfang zurück Gibt die Position des Bandes aus Gibt Informationen über das Laufwerk und das Band seek <zahl> Steuert direkt die vorgegebene Blockposition an, das ist die Position, die auch tell ausgeben würde. fsf <zahl> Steuert direkt eine Dateiende-Markierung an, fsf 1 die erste, fsf 2 die zweite,... eof Springt zur letzten Dateiende-Markierung. Der Befehl mtst unterscheidet sich kaum von mt. Ein Unterschied besteht darin, dass mtst status auch bei DDS- Bändern die Bandart richtig erkennt.
buffer Dieses Programm dient dazu den Datenstrom zum Streamer bzw. vom Streamer zu puffern, damit das Bandlaufwerk möglichst gleichmäßig arbeiten kann. Besonders nützlich ist buffer, wenn man per rsh oder ssh auf einem übers Netz verbundenen Rechner speichert. Die wichtigsten Parameter für buffer sind -i Device/Datei gibt an, woher buffer die Daten bekommt -o Device/Datei gibt an, wohin buffer die Daten schreiben soll tar Zum Erstellen von (nicht komprimierten) Archiven benutzt man tar üblicherweise in der Form tar -cf <Archivname> <Quelle> -C <Zielverzeichnis> Tar speichert aber aus Sicherheitsgründen nie absolute Pfade, führende Slashes im Dateinamen werden nicht mit gespeichert. Mit dem Parameter -V (Volume) kann man zusätzlich noch ein Label, einen Titel für das Archiv vergeben. Backup mit tar & Co Sollten sich mehrere Sicherungsdateien auf dem Band befinden, so muss man jeweils mit mt seek oder mt fsf die entsprechende Startposition anfahren. Ein einfacher Ablauf zur Sicherung des Home-Verzeichnisses könnte folgendermaßen aussehen: mt [ f /dev/nst0 ] rewind tar -cf /dev/nst0 /home -V "Sicherung von /home" Es kann sinnvoll sein, auch das Programm buffer mit einzubinden: mt rewind tar -cf - /home -V "Sicherung von /home" buffer - o /dev/tape sichert das Home-Verzeichnis auf das Band (kann etwas dauern) sichert das Home-Verzeichnis auf das Band (gepuffert) Das - Zeichen anstelle des Device-/Dateinamens bewirkt eine Ausgabe auf die Standardausgabe, die sich dann umleiten lässt zum Programm buffer. Zum Zurückspielen der Sicherung dient die Befehlsfolge: mt rewind cd /tmp Zum Auspacken soll ein temporäres Verzeichnis dienen. buffer -i /dev/tape tar -xf - spielt das Home-Verzeichnis vom Band ins Verzeichnis /tmp nur Teile des Archivs zurückspielen: tar cvf /dev/nst0 /home > listing.txt mt f /dev/nst0 rewind tar tf /dev/nst0 > listing.txt cp listing.txt to-extract.txt tar xvf /dev/nst0 --files-from=toextract.txt eine Logdatei der Dateien des Archivs anlegen nachträgliches Erzeugen dieser Liste ohne Option v, die zusätzliche Infos erzeugt Logdatei kopieren und editieren, also die wiederherzustellenden Dateien als Inhalt belassen spielt die gewünschten Dateien zurück Liste aus der Logdatei entnommen
kleines Tutorial: Organisation von Daten auf dem Band Die Datenorganisation auf einem Band ist sehr primitiv: o keine Inhaltsverzeichnisse, Dateinamen oder Dateigrößen o eine Datei ist hier eine lose Folge von Bytes (File) endend mit einer EOF-Marke o Das Bandende wird nach der zuletzt geschriebenen Datei mit zwei EOF-Marken gekennzeichnet. Die Files werden in der Reihenfolge geschrieben, in der sie angeliefert werden. Man muss sich also merken, wo sich welches File befindet o Für die Sicherung eines ganzen Verzeichnisbaumes wäre ein direktes Schreiben der Dateien auf Band völlig unpraktikabel. Die praktische Lösung heißt hier Archiv: o Das ist eine einzige Datei, in der die wichtigsten Merkmale der archivierten Dateien enthalten sind: Name, Größe, Eigentümer, Rechte und Verzeichnisstruktur. o Aus einem Archiv lassen sich einzelne Dateien gezielt extrahieren. o Das Archiv wird auf dem Band als File abgelegt, dessen Position man sich nur noch merken muss. o Um einzelne Archive gezielt ansprechen zu können, muss das Band vorher mit "mt" positioniert werden. o Tipp: für jedes Dateisystem ein getrenntes Archiv erzeugen, denn oft ist nur ein einzelnes DS defekt Sicherung auf einem anderen Rechner mit rsh Über rsh hat man die Möglichkeit Befehle auch auf einem anderen Rechner auszuführen. Aus Sicherheitsgründen ist dieser Zugriff in den Standardvorgaben meist nicht erlaubt. Zuerst muss man rsh in der /etc/inetd.conf aktivieren. Dazu entfernt man das Kommentarzeichen am Anfang der folgenden Zeile: # shell stream tcp nowait root /usr/sbin/tcpd in.rshd -al Anschließend muss der Inetd neu gestartet werden mit rcinetd restart Eine zweite Veränderung ist in der Datei /etc/hosts.equiv vorzunehmen. Hier werden die Rechner und auch Benutzernamen angegeben, denen der Remote-Zugriff erlaubt sein soll. # # hosts.equiv This file describes the names of the hosts which are # to be considered "equivalent", i.e. which are to be # trusted enough for allowing rsh(1) commands. # # hostname 192.168.1.1 username damit darf der Benutzer username vom Rechner mit der IP 192.168.1.1 aus remote auf das lokale System (tapeserver, das mit dem Streamer) zugreifen. Damit sollte dann auch die Sicherung auf diesem Rechner möglich sein. rsh -l username tapeserver "mt rewind" rsh -l username tapeserver "" tar -cf - /home -V "Sicherung von /home" rsh -l username tapeserver "buffer -o /dev/tape" rsh -l username tapeserver "" Auch das Zurückspielen ist natürlich über das Netz möglich: rsh -l username tapeserver "mt rewind" rsh -l username tapeserver "" cd /tmp sichert das Home-Verzeichnis auf das Band (gepuffert) das erfolgt natürlich lokale rsh -l username tapeserver "buffer -i /dev/tape" tar -xf - sichert das Home-Verzeichnis auf das Band (gepuffert) rsh -l username tapeserver "" Wer auf eine grafische Oberfläche verzichten kann, der ist also auch mit den normalen Linux Bordmitteln gut bedient.
tar im Detail Erzeugen eines Verzeichnisses test linux:~ # mkdir test linux:~ # cd test linux:~/test # echo bla > datei1 linux:~/test # echo bla > datei2 linux:~/test # cd.. Erstellen eines Archivs (Originaldateien bleiben bestehen) linux: # tar -cvf /tmp/test.tar /root/test tar: Removing leading `/' from member names /root/test/ /root/test/datei1 /root/test/datei2 Inhalt des Archivs im Langformat (-v) mit den gespeicherten Dateieigenschaften anzeigen: linux:~ # tar -tvf /tmp/test.tar drwxr-xr-x root/root 0 2005-01-13 15:18:57 test/ -rw-r--r-- root/root 4 2005-01-13 15:18:52 test/datei1 -rw-r--r-- root/root 4 2005-01-13 15:18:57 test/datei2 Dateien an Archive anhängen bzw. updaten linux:~ # touch sonne linux:~ # tar -rvf /tmp/test.tar sonne sonne linux:~ # touch mond linux:~ # tar -rvf /tmp/test.tar mond mond Archiv entpacken, dazu immer in das Zielverzeichnis hineinwechseln (führendes / wurde ja entfernt): linux:~ # cd /tmp linux:~ # su jmeese jmeese@linux:/tmp> tar -xvf test.tar root/test/datei1 root/test/datei2 root/test/datei1 # nur dateien 1 und 2 wieder herstellen root/test/datei2 jmeese@linux:/tmp> ls -l root/test/ # Eigentümer wird der auspackende User total 8 # Rechte laut umask -rw-r--r-- 1 jmeese users 4 Jan 13 15:18 datei1 # wenn root entpackt, sind die Optionen --same-ownwer -rw-r--r-- 1 jmeese users 4 Jan 13 15:18 datei2 # und --preserve-permissions voreingestellt weitere wichtige Optionen zum Archivformat: -z - Archiv mit gzip (de-)komprimieren -j - Archiv mit bzip2 (de-)komprimieren weitere wichtige Optionen zur Dateiauswahl: I bleibt im gleichen Dateisystem -T die zu sichernden Dateien werden aus einer Liste aus dieser Datei gelesen --exclude-from=pattern Ausschluss von Dateien mit dem angegebenen Muster, diese Option ist beliebig oft wiederholbar X w. o., Muster steht in Datei h folge Symlink und sichere Zieldatei (--dereference), in der Voreinstellung wird ein Symlink auch als Symlink gesichert C vor der Operation in dieses Verzeichnis wechseln weitere wichtige Optionen zur Dateiauswahl: -k bereits existierende Dateien nicht überschreiben --backup legt ein Backup an von überschriebenen oder gelöschten Dateien --ignore-failed-read tar liest bei auftretenden Leseproblemen weiter -V - vergibt dem Archiv einen Volume-Namen
Manipulationen am Streamer linux: # mt -f /dev/nst0 tell # zeigt Bandstellung an At block 0. linux: # tar -cf /dev/nst0 /etc -V "Sicherung von /etc" tar: Removing leading `/' from member names linux: # mt -f /dev/st0 tell At block 1617. linux: # tar -tf /dev/nst0 # Listen des Archivs Sicherung von /etc etc/ etc/x11/ etc/x11/fs/ etc/x11/fs/config... linux: # tar -tf /dev/nst0 # listet nichts mehr linux: # linux: # mt -f /dev/nst0 rewind # Vorspulen des Bandes linux: # tar -tf /dev/nst0 # Listen wieder möglich Sicherung von /etc etc/ etc/x11/... linux: # mt -f /dev/nst0 tell # zeigt Bandstellung eines At block 1616. # non-rewind-devices an linux: # mt -f /dev/nst0 tell # bleibt unverändert At block 1616. linux: # mt -f /dev/st0 tell # ein rewind-device spult nach At block 1617. # jeder Aktion wieder vor linux: # mt -f /dev/st0 tell At block 0. nur ausgewählte Dateien aus einem Archiv rücksichern linux: # mt -f /dev/nst0 rewind linux: # tar -tf /dev/nst0 > listing.txt linux: # egrep 'hosts$ fstab$' listing.txt > to-extract.txt linux: # mkdir bak linux: # cd bak linux: bak # mt -f /dev/nst0 rewind linux: bak # tar -xvf /dev/nst0 --files-from=../to-extract.txt Sicherung von /etc Reading `Sicherung von /etc' etc/fstab etc/hosts linux: bak # ls -l etc/ total 8 -rw-r--r-- 1 root root 917 Jan 12 09:10 fstab -rw-r--r-- 1 root root 682 Jan 4 11:15 hosts jedes Dateisystem einzeln sichern linux: # tar cvzf /dev/nst0 one-file-system / # /boot nicht mitgesichert linux: # tar cvzf /dev/nst0 one-file-system / boot # /boot extra gesichert
Systempartition /usr mit einem Linux-Rescue-System wiederherstellen Hochfahren des Rescue-Systems, Anlegen eines Verzeichnisses /restore/usr und hineinmounten der zu restaurierenden Systempartition linux: # mount /dev/sda3 /restore/usr linux: # cd /resore linux: # tar xvzf /dev/nst0 linux: # umount /restore Dateisystem inkrementell sichern Dazu wird ein Snapshot-File mit wichtigen Informationen über den Zustand des Dateisystems abgelegt: linux: # tar -cvf etc.tar --listed-incremental=/etc/snapshot.etc /etc linux: # tar -xvf etc.tar wc -l 2484 ab jetzt wird zu diesem Zustand inkrementell gesichert: linux: # tar -cvf etc.tar --listed-incremental=/etc/snapshot.etc /etc linux: # tar -xvf etc.tar wc -l 303 Rücksicherung: linux: # cd / linux: # tar -xvf etc.tar --listed-incremental=/etc/snapshot.etc