10.3 Backups erstellen
Egal, ob Sie zu Hause nur einen kleinen PC haben oder der Administrator bzw. die Administratorin eines mittleren Firmennetzwerks sind, Sie werden an der Backup-Problematik nicht vorbeikommen. Aber wie immer erst mal der Reihe nach.
10.3.1 Die Sinnfrage
Nein, an dieser Stelle wollen wir nicht klären, »woher wir kommen, wohin wir gehen und warum wir hier sind«. Viel eher lauten die Fragen hier: »Wohin damit?« und »Was soll das?«. In der Tat sehen viele Menschen die Notwendigkeit von Backups nicht ein und bereuen das später oft ganz bitterlich.
Was ist ein Backup?
Ein Backup ist eine Art Sicherheitskopie wichtiger Daten. So eine Kopie wird entweder vom ganzen System oder nur von wirklichen Nutzdaten wie Datenbanken oder Ähnlichem erstellt – in allererster Linie, um einem Datenverlust vorzubeugen. Da es ziemlich selten vorkommen sollte, dass man wichtige Daten mal so eben aus Versehen löscht, ist der Hauptgrund für Datenverlust oft ein defekter Datenträger. Hin und wieder werden Daten auch aus Versehen überschrieben.
Es ergibt also wenig Sinn, Daten auf demselben Datenträger zu sichern, wie es leider von sehr vielen Laien oft praktiziert wird. Mit anderen Worten: Es nützt wirklich nichts, wenn Sie Ihre wichtigen Daten einfach nur in ein zweites Verzeichnis kopieren. Geht Ihre Festplatte kaputt, sind die vermeintlich gesicherten Daten nämlich auch futsch.
Zur richtigen Zeit am richtigen Ort ...
... sollten Sie ein Backup machen. Wann das ist und worauf es gespeichert wird, ist dabei allerdings sehr von den Gegebenheiten abhängig, denen Sie sich zu unterwerfen haben.
Sie sollten des Weiteren beachten, dass eine ordinäre Sicherheitskopie erst zum wirklichen Backup wird, wenn sie regelmäßig von einem vordefinierten Datenbestand gezogen wird. Wenn Sie also alle Jubeljahre mal ein paar Dateien sichern, weil die eventuell noch wichtig sein könnten, macht das noch lange kein Backup.
Der verrückte Bücher schreibende Informatikstudent hingegen, auf dessen Zweit- oder Drittserver jede Nacht vollautomatisch ein Backup mit seinen wichtigsten Daten durchgeführt wird, macht es schon eher richtig. Aber wie immer gilt: Jeder muss seinen Weg finden, und jeder Weg ist anders. Vielleicht macht Ihnen ein Datenverlust ja auch gar nichts aus, weil Sie Ihren PC nur zum Surfen nutzen und beispielsweise E-Mails über ein Webinterface lesen. In solchen Fällen müssen Sie natürlich genau überlegen, ob Sie überhaupt ein Backup brauchen oder ob Sie die Zeit, die Sie dafür zu investieren hätten, nicht sinnvoller nutzen könnten.
10.3.2 Backup eines ganzen Datenträgers
Wie wir schon erwähnt haben, ist eine Art des Backups ein vollständiges System-Backup. Mit dieser Methode erstellt man einfach nur ein Image, also eine bitweise Kopie der Festplatte bzw. anderer Datenträger, die im Notfall einfach wieder »drübergebügelt« wird – alle in der Zwischenzeit neu hinzugekommenen Daten sind natürlich wie bei jedem Backup verloren. (Dieser Fakt impliziert natürlich, dass Sie regelmäßig Backups machen sollten, um im Notfall nicht wieder ins letzte Jahrtausend zurückgeworfen zu werden.) Allerdings haben Sie im Fall eines Totalausfalls wirklich keine Arbeit außer der, den Kopiervorgang zu initialisieren. Sie müssen kein neues System installieren und nichts konfigurieren – der Zustand zum Zeitpunkt des Backups wird komplett wiederhergestellt.
Demnach hat ein solches Backup natürlich den Vorteil, dass man am wenigsten Arbeit damit hat. Allerdings ist so ein Backup häufig wirklich sehr groß, sodass es für Privatanwenderinnen und -anwender oft nicht praktikabel ist, ihre gesamte Festplatte auf diese Art zu sichern. Man bräuchte, würde man so ein Image nicht packen, genauso viel Platz, wie die alte Festplatte groß ist – sprich die gleiche Platte noch einmal. Und das ist schlicht zu teuer, außerdem gibt es bessere Alternativen.
Aber sehen wir uns einmal ein einfaches Beispiel an. Wir benutzen dazu das Programm dd, das solche bitweisen Kopien herstellen kann. Sie geben dazu einfach ein Device bzw. eine Datei als Eingabe und als Ausgabe an. dd liest dann blockweise von der Eingabe und schreibt die Daten auf die Ausgabe.
In unserem Beispiel wollen wir eine alte Festplatte verkaufen und sie vorher gründlich löschen. Weil heutzutage selbst jeder Laie weiß, dass das Löschen von Dateien diese nicht wirklich von der Festplatte entfernt, möchten wir die ganze Platte wirklich leeren. Wir lesen dazu von /dev/zero, einem Device, das beim Lesen immer nur Nullen zurückgibt. Wir beschreiben unsere Festplatte also mit Nullen, sodass eventuell böswillige Käufer nicht in unsere Privatsphäre eindringen können, indem sie versuchen, Daten wiederherzustellen.
# dd if=/dev/zero of=/dev/sdb
Listing 10.20 Festplatte löschen mit dd
Sie fragen sich jetzt bestimmt, was dieses komische Beispiel mit einem Backup zu tun hat. Nun, das ist kreativer Umgang mit Technik – um unser Ziel zu erreichen, leiten wir einfach das Zero-Device auf die zweite Festplatte /dev/sdb. Die wichtigsten Optionen für dd sind dabei if=DEVICE und of=DEVICE, die die Quelle bzw. das Ziel unserer Kopiererei festlegen.
In unserem zweiten Beispiel wollen wir den Master Boot Record (MBR) sichern:
# dd if=/dev/sda of=MBR.txt count=1 ibs=512 1+0 records in 1+0 records out # ls -l MBR.txt -rw-r--r-- 1 root root 512 Oct 8 18:03 MBR.txt
Listing 10.21 Backup des MBR
Hier haben wir die Blockgröße bei der Input-Datei mit der Option ibs auf 512 Byte, also einen Sektor, gesetzt. Anschließend kopieren wir genau einen Block (count=1) – und der erste Sektor der Festplatte ist schließlich der MBR mit Bootloader und Partitionstabelle.
Die resultierende Datei ist natürlich genau 512 Byte groß – so viel haben wir ja auch kopiert. Wir haben jetzt zwar immer noch keinen gesamten Datenträger kopiert, aber sicherlich ist das auch nicht nötig.
Sie kennen jetzt die wichtigsten Optionen von dd und haben eine ungefähre Vorstellung davon, was man damit anstellen kann. Mit etwas Logik und Forscherdrang könnten Sie versuchen, auf ganz ähnliche Weise ein Image Ihrer alten Computerspiele (noch auf verstaubter Floppy, CD oder DVD auf dem Dachboden gelagert) zu erstellen oder eine Partition zu sichern. Oder Sie erstellen eine ganze Sammlung unterschiedlicher Distributionen für den Raspberry Pi, die Sie auf unterschiedliche SD-Karten speichern.
10.3.3 Backup ausgewählter Daten
Möchte man nur ausgewählte Daten sichern, so befinden sich diese oft in einem bestimmten Verzeichnis oder einer besonderen Datei. In einem solchen Fall bietet es sich an, die entsprechenden Daten zu komprimieren, um Platz zu sparen.
Wo Sie beispielsweise unter Windows die Daten einfach »zippen« würden, ist unter Linux ein etwas anderes Vorgehen angebracht. Es wird nämlich zwischen einem Archiv und einer gepackten Datei unterschieden: Ein Archiv enthält mehrere Dateien und Verzeichnisse, während eine gepackte Datei einfach nur eine einzige komprimierte Datei darstellt.
Archive mit tar
Damit Rechte und andere Dateiattribute erhalten bleiben, werden mehrere Dateien also vor dem Packen jeweils in ein Archiv gesteckt. Das hat den Vorteil, dass bei Änderungen an den Dateiattributen nicht jedes einzelne Komprimierungsprogramm neu geschrieben werden muss.
Das Archivierungsprogramm der Wahl ist unter Linux so gut wie immer tar, der Tape Archiver. Wie Sie dem Namen entnehmen können, stammt das Programm aus einer Zeit, als Backups noch auf große Magnetbänder geschrieben wurden.
$ tar -c Verzeichnis > Verzeichnis.tar $ ls *.tar Verzeichnis.tar
Listing 10.22 Ein Archiv mit tar erstellen
tar schreibt die binären Daten standardmäßig einfach auf die Standardausgabe, also in unserem Fall auf den Bildschirm. Das ist nützlich für Pipes, siehe Kapitel 4, »Grundlagen der Shell«. Weil wir sie aber nicht auf dem Bildschirm, sondern lieber in einer Datei haben wollen, müssen wir die Ausgabe mit dem >-Operator in eine Datei umlenken.
Möchten wir das Ganze auch noch packen, dann müssen wir zur Option -c für create auch noch ein -z packen, um das Resultat noch zu gzippen. Das erspart uns den Aufruf eines Extraprogramms, und so war es also nicht ganz richtig, als wir am Anfang sagten, dass Archivierer und Packer streng voneinander getrennt sind. Das Resultat ist allerdings: Es handelt sich um ein gepacktes tar-Archiv.
$ tar -cz Verzeichnis > Verzeichnis.tar.gz $ ls *.gz Verzeichnis.tar.gz
Listing 10.23 Ein komprimiertes Archiv mit tar erstellen
Jetzt haben wir alle Dateien in Verzeichnis gepackt. Wir drücken die Tatsache, dass wir den Inhalt von Verzeichnis erst gepackt und dann komprimiert haben, durch die Endung .tar.gz aus, die oft auch als .tgz abgekürzt wird.
Möchten wir so ein Archiv wieder entpacken, nutzen wir statt -c für create einfach die Option -x für extract. Handelt es sich um ein gzip tar-Archiv, packen wir wie beim Erstellen einfach noch das -z dazu.
$ tar -xz Verzeichnis.tar.gz
Listing 10.24 Ein Archiv mit tar entpacken
Was Sie mit tar noch so alles anstellen können, erfahren Sie wie immer auf der Manpage, die Sie mit $ man tar lesen. Dort finden Sie unter anderem Informationen darüber, wie bestehende Archive modifiziert werden können oder wie Sie sich deren Inhalt ausgeben lassen können.
Komprimieren mit gzip, bzip2 und compress
Wie wir bereits erwähnt haben, gibt es unterschiedliche Werkzeuge, die alle unterschiedliche Komprimierungsverfahren einsetzen und daher mehr oder weniger effektiv sind. Je mehr eine Datei komprimiert wird, umso länger muss in der Regel diese Komprimierung berechnet werden.
Im Folgenden Listing stellen wir einfach die entsprechenden Komprimierungsprogramme gegenüber. Dazu haben wir unser Buchverzeichnis gepackt, das im Original zum aktuellen Zeitpunkt stolze 13 MByte groß ist. Wie Sie sehen, sind die Ergebnisse für verschiedene Kompressoren doch sehr unterschiedlich. Das GNU-gzip-Programm in Verbindung mit tar liefert neben dem zip-Programm das größte Ergebnis. Mit Abstand die kleinste Datei hat bzip2 erzeugt, allerdings hat das Programm dafür auch am längsten gebraucht. Das ist ein Grund dafür, dass man in der Unix-Welt oft auf den Kompromiss gzip zurückgreift.
$ ls -lh Buch* -rw-r--r-- 1 jploetne users 2.2M Oct9 Buch.tar.bz2 -rw-r--r-- 1 jploetne users 3.7M Oct9 Buch.tar.gz -rw-r--r-- 1 jploetne users 3.8M Oct9 Buch.zip -rw-r--r-- 1 jploetne users 13M Oct9 Buch.tar
Listing 10.25 Vergleich der Komprimierungsprogramme
Sie sehen auch gut, dass tar die Daten standardmäßig nicht packt – das .tar-Archiv ist nämlich genauso groß wie das Verzeichnis selbst. Nun möchten wir die Programme einzeln kurz vorstellen und ihre Bedienung erläutern.
compress
Das Programm compress hat mittlerweile nur noch historische Bedeutung und wird in der Praxis kaum noch eingesetzt. Die Programme zum Packen bzw. Entpacken heißen compress und uncompress, und die entsprechenden Dateien werden dabei einfach auf der Kommandozeile übergeben. Weil compress kaum noch genutzt wird, ist auf vielen Systemen oft nur uncompress vorhanden. So haben Sie zwar die Möglichkeit, noch vorhandene alte Archive zu entpacken, jedoch nicht die Möglichkeit, neue zu erstellen.
bzip2
Das effektivste unter den Komprimierungsprogrammen wird durch die Kommandos bzip2 und bunzip2 gesteuert, an die sich der Dateiname der zu komprimierenden Datei anschließt. Optional können Sie beim Packen beispielsweise noch das Verhältnis von Geschwindigkeit und Effektivität durch die Parameter -1 bis -9 steuern, wobei -1 die schnellste und -9 die effektivste Art zu packen bezeichnet.
Haben Sie eine gepackte Textdatei, so können Sie sie auch lesen, ohne sie gleich entpacken zu müssen. Für diesen Fall gibt es nämlich das praktische Programm bzcat, das den Inhalt der Datei einfach ausgibt:
$ bzcat Readme.bz2 Das ist ein Test . $
Listing 10.26 Gepackte Dateien lesen: bzcat
gzip
Die einfache Steuerung durch zwei Programme zum Packen und Entpacken gibt es natürlich auch – gzip und gunzip. Allerdings gibt es für das beliebte und populärste Packprogramm weitaus mehr Tools als nur ein zcat wie bei bzip2. Es sind nämlich unter anderem diff, less und grep jeweils durch ein vorangestelltes z auch für so gepackte Dateien verfügbar.
deja-dup macht Backups einfach
Sofern Sie einen Laptop- oder Desktop-Rechner mit grafischer Oberfläche nutzen, können Sie auch auf grafische Tools wie deja-dup zurückgreifen. Diese Tools müssen Sie gegebenenfalls zunächst installieren. deja-dup erlaubt die einfache Selektion der zu sichernden Verzeichnis, führt die Backups automatisiert regelmäßig durch, unterstützt die Sicherung auf Remote-Systemen, etwa über SFTP, und kann Backups auch direkt vom Sicherungssystem zurückspielen.