Die Memoiren des Josh K. Phisher

Jetzt wieder mit Gratis-Kommentaren!

Posts Tagged ‘Restore’

Backup-Software für Windows

Posted by princo - 17.12.2008

Zwei nette Programme für Windows:

  • Macrium Reflect Free Edition:
    Ausgezeichnete Software um Windows-Installationen zu sichern. Das Beste, was ich bisher im Freeware-Bereich gesehen habe. Sehr schnelle Arbeitsgeschwindigkeit. System kann ohne Probleme aus dem Backup heraus wieder hergestellt werden. Absolut Top!
  • Yadis:
    Weniger ein Backup-Tool, als vielmehr eine permanente Daten-Sicherung auf einem externen Datenträger. Kommt etwas unscheinbar daher, kann aber ein paar richtig tolle Sachen. Dokumentation ist quasi nicht vorhanden, ausprobieren ist angesagt. Leider wird es wohl nicht mehr weiterentwickelt. Schönes und schlankes Programm.

Posted in Software | Verschlagwortet mit: , , , | 1 Comment »

Backup eines Ubuntu-Systems

Posted by princo - 19.08.2008

Aus gegebenen Anlaß schreibe ich hier mal auf, wie man ein Ubuntu-System so auf einen externen Datenträger sichert, daß man das System aus dieser Sicherung auch leicht wiederherstellen kann.

Gleichzeitig ist es eine Möglichkeit, wie man ein Linux-Dateisystem defragmentieren kann.

Dieser Artikel wird bei Bedarf korrigiert oder geändert.

Vorbemerkung
Die nachfolgenden Ausführungen behandeln die Sicherung einer typischen Ubuntu-Installation. Dabei handelt es sich bewusst nicht um eine Archivierung mit mehreren verschiedenen Sicherungsständen. Dies kann natürlich durch ein Umkopieren des Sicherungsverzeichnisses erreicht werden, ist aber hier nicht Bestandteil des Artikels. Dieses Thema wird ggfs. gesondert behandelt werden.

Auch wenn die schiere Größe des Artikel einen anderen Eindruck erwecken mag: Hier wird eine sehr einfache und äußerst robuste Möglichkeit der Datensicherung beschrieben. Jeder, der in der Lage ist, drei simple Textdateien anzulegen, wird mit dieser Anleitung etwas anfangen können.

Die Vorbereitung
Man nehme:

  1. Eine externe Festplatte genügend großer Kapazität. Ungefähr so 250 GB aufwärts. Je größer, desto besser. Diese Festplatte sollte mindestens eine USB 2.0 Schnittstelle haben, und über einen eigenen Ein/Aus-Schalter verfügen.
  2. Man lädt sich die SystemRescueCD herunter, und brennt das Image auf einen CD-Rohling. Derzeitiger Stand ist die Version 1.0.4
  3. Man installiert über die Paketverwaltung das Programm gparted.
  4. Über System – Systemverwaltung – Partitions Editor löscht man die evtl. auf der externen Festplatte vorhandenen Partitionen (vorher das Dateisystem der Platte aushängen), und legt eine primäre ext3 Partition in ausreichender Größe an.
  5. Dann schaltet man die externe Platte aus, wartet einen kleinen Moment, und schaltet sie dann wieder ein. Die Platte sollte jetzt wieder automatisch eingehängt werden (nach /media/disk)
  6. Nun öffnet man ein Terminal, und gibt dort den Befehl sudo chmod 777 /media/disk ein.
  7. Jetzt kann man auf der externen Platte drei bestimmte Dateien anlegen.

Die Datei Backup-rsync.sh (drei Zeilen):

sudo dd if=/dev/sda of=Backup-sda.mbr count=1 bs=512
sudo sfdisk -d /dev/sda > Backup-sda.sf
sudo rsync -avxSH --delete --exclude-from=exclude.dat / ./Backup

Dann die Datei Backup-komplett.sh (drei Zeilen)


mkdir /mnt/input
mount -r /dev/sda2 /mnt/input
rsync -avSH --progress --delete /mnt/input/ /mnt/output/Backup

(Für /dev/sda2 trägt man natürlich die Partition ein, auf der sich die eigene Linux-Installation befindet. Bei mir ist das /dev/sda2 weil auf sda1 noch eine Windows-Installation liegt)

Die Datei exclude.dat (11 Zeilen):


/dev/*
/initrd/*
/lib/modules/*
/proc/*
/srv/*
/sys/*
/tmp/*
/tmp/var/lib/*
/var/run/*
/var/tmp/*
.gvfs

Nun muß man die beiden .sh Dateien noch ausführbar machen. Am einfachsten mit dem Dateimanager Nautilus. Dort mit der rechten Maustaste auf die Dateien klicken, Eigenschaften – Zugriffsrechte – Datei als Programm ausführen (Haken setzen).

Die externe Festplatte sollte jetzt folgenden Inhalt haben:

Inhalt der externen Festplatte

Inhalt der externen Festplatte

Damit sind die Vorbereitungen auch schon abgeschlossen.

Das Backup
Man startet den Backup-Vorgang durch Doppelklick auf Backup-rsync.sh. Nach Eingabe des Passwortes geht es auch schon los. Nach einiger Bedenkzeit werden einem die Dateien angezeigt, die gerade gesichert werden.

Während des Backups kann mit dem System ganz normal weitergearbeitet werden.

Bevor die Frage kommt, hier gleich die entsprechende Antwort: Das Backup dauert solange, bis es zu Ende ist. Das erkennt man daran, daß sich das Fenster schließt. Sollte man das Backup vorzeitig abbrechen müssen, so kann es es einfach mit STRG-C tun. Das Backup kann später einfach fortgesetzt werden. Nachfolgende Backups werden dann sehr viel schneller durchgeführt, und dauern i.d.R. nur wenige Minuten.

Das erweiterte Backup
Um ein wirklich vollständiges Backup zu haben, ist es zwingend notwendig, mindestens einmal eine Sicherung mittels Backup-komplett.sh durchzuführen. Das kann aber nicht unter dem laufenden System stattfinden. Dafür muß der Rechner mit der SystemRescueCD (s.o.) gebootet werden. Theoretisch könnte man auch eine fast beliebige Linux-Live-CD dafür verwenden, aber davon rate ich ab. Das Skript funktioniert am Besten mit der SystemRescueCD.

Man startet mit der SystemRescueCD, und läßt den Bootvorgang entweder einfach durchlaufen, oder man gibt am Boot-Prompt diese Zeile an: „rescuecd setkmap=de„. Sollte die CD nicht richtig starten, dann kann man noch die Option “ acpi=off“ anhängen. Im Bootprompt gilt natürlich anfangs noch die amerikanische Tastaturbelegung 🙂

Ist das System gestartet, dann ermittelt man mit Hilfe des Befehls

fdisk -l

die derzeit gültige Partitionsnummer des externen Laufwerkes. Diese kann sich nämlich u.U. von Bootvorgang zu Bootvorgang unterscheiden. Das kommt ganz auf die eigene Hardware an.

Angenommen, das externe Laufwerk liegt auf /dev/sdg1 dann muss man jetzt folgende Befehle eingeben

mkdir /mnt/output
mount
/dev/sdg1 /mnt/output
cd /mnt/output

Zur Kontrolle mal

ls

eingeben, dann müßte man die Backup-Dateien und das Verzeichnis Backup sehen.

Jetzt wird mit der Eingabe von

./Backup-komplett.sh

der finale Backup-Vorgang gestartet. Dieser Vorgang dauert nur wenige Minuten, beim allerersten Backup etwas länger.

Danach fährt man den Rechner mittels

halt

herunter, und trennt den externen Datenträger vom System.

Nähere Erläuterung: Man kann den Rechner zwar auch nur mit der Backup-komplett.sh sichern. Allerdings sinkt dann erwartungsgemäß die Bereitschaft ein regelmäßiges Backup zu machen, weil das Booten mit der SystemRescueCD zu umständlich ist.

Das erweiterte Backup (DeLuxe-Version)

Wenn einem die manuelle Eingaben des vorherigen Abschnittes zu mühselig sind, dann gibt es noch eine andere Methode, um das erweiterte Backup (die Vollsicherung) durchzuführen.

Dies geschieht über eine leicht modifizierte Version der SystemRescueCD. Idealerweise installiert man diese CD dafür auf einem USB-Stick, wie es HIER beschrieben wird. Dafür sind mittlerweile alle gängigen Sticks geeignet. Der Stick sollte eine Kapazität von 1 GB haben (kostet derzeit um die 6 Euro).

Größere Sticks sind natürlich auch geeignet, aber ich rate davon ab, weil man sonst zuviel Mist auf diesen Dingern speichert 🙂

Natürlich muß der betreffende Rechner auch in der Lage sein, von einem solchen Stick zu booten. Wenn das nicht der Fall ist, dann können die nachfolgenden Ausführungen auch mit einem modifizierten CD-Image durchgeführt werden. Dafür verweise ich allerdings auf die entsprechende Dokumentation. Mit einem USB-Stick ist das viel einfacher zu realisieren.

Um eine Vollsicherung ohne weitere Benutzereingaben zu realisieren, muß der Stick sowohl mit der zu sichernden Platte, als auch mit dem Sicherungsmedium „verheiratet“ werden.

Dafür fährt man den Rechner regulär hoch, und schließt die externe Festplatte an.

In einem Terminalfenster gibt man dann den Befehl sudo blkid ein. Es werden die UUIDs sämtlicher angeschlossenen Partitionen ausgegeben.

Dann steckt man den USB-Stick mit der SystemRescueCD ein, und legt dort im Hauptverzeichnis die Datei „autorun“ mit folgendem Inhalt an:


#!/bin/bash
mkdir /mnt/output
mkdir /mnt/input

if mount UUID='UUID-ZIEL' /mnt/output
then
 echo 'Ziel erfolgreich gemountet.'
else
 echo 'Ziel NICHT verfügbar oder UUID falsch!'
 exit 1
fi

if mount -r UUID='UUID-QUELLE' /mnt/input
then
 echo 'Quelle erfolgreich gemountet.'
else
 echo 'Quelle NICHT verfügbar oder UUID falsch!'
 exit 1
fi

cd /mnt/output

if rsync -avSH --progress --delete --exclude=/tmp/* /mnt/input/ /mnt/output/Backup
then
 halt
else
 echo 'Backup konnte NICHT vollständig durchgeführt werden!'
 exit 1
fi

Für UUID-ZIEL und UUID-QUELLE muß man natürlich die eigenen Werte aus obigen „sudo blkid“ eintragen.

Danach editiert man die Datei „syslinux.cfg“ auf dem Stick:
Die erste Zeile wird auf

default rescuecd setkmap=de docache

geändert.

Zum Testen bootet man das System bei ausgeschalteter externer Festplatte mit dem USB-Stick. Das Script muß jetzt mit der Fehlermeldung „Ziel NICHT verfügbar oder UUID falsch!“ abbrechen.

Der nächste Bootversuch findet dann mit eingeschalteter externer Festplatte statt. Diesmal sollte das System die Datensicherung ohne Fehlermeldung durchführen.

Nach erfolgreicher Sicherung fährt das System duch den „halt„-Befehl in der „autorun„-Datei herunter und schaltet sich ab. Der „halt„-Befehl kann natürlich auch durch ein „reboot“ ersetzt werden, wenn dies gewünscht ist.

Während die Sicherung läuft, kann der USB-Stick (oder die CD) entfernt werden, er/sie ist für den weiteren Ablauf nicht nötig.

Wann verwendet man Backup-rsync.sh und wann Backup-komplett.sh?
Eigentlich sollte das durch die vorangegangenen Ausführungen bereits klar sein:
Backup-rsync.sh ist für die tägliche Sicherung zuständig,
Backup-komplett.sh stellt sicher, daß das System vollständig wiederhergestellt werden kann.

Backup-komplett.sh sollte man grundsätzlich vor kritischen Aktionen am System durchführen. Dazu gehören bestimmte System-Updates (z.B. neuer Kernel), oder wenn man neue Software installieren möchte. Es schadet aber auch nicht, wenn man dieses Prozedere regelmäßig durchführt, z.B. jede Woche.

Wie greife ich auf die Daten im Backup zu?
Ganz simpel: einfach nur die externe Platte einschalten und das automatische Mounten abwarten. Da die Daten 1:1 abgelegt werden (inkl. aller Berechtigungen) kann man ganz normal mit dem Dateimanager durch die Verzeichnisse wandern, und auf jede Datei im Backup zugreifen. Dafür ist keine extra Software nötig.

Ist das wirklich ein komplettes Backup?
Ja und Nein. Bei erneuten Sicherungsläufen werden die Dateien anhand ihrer Größe und ihres Datums verglichen. Gibt es dabei einen Unterschied, wird die Datei gesichert. Es gibt allerdings ein paar Sonderfälle, bei denen die Größe und das Datum einer Datei gleichbleibt, obwohl sich der Inhalt geändert hat. Das ist z.B. der Fall, wenn man bei Digitalfotos die EXIF-Informationen verändert. Eine derart geänderte Datei würde nicht neu gesichert werden. Man könnte die Backup-Skripte zwar ganz leicht darauf anpassen, allerdings würden sich die Backup-Zeiten dadurch erheblich verlängern. Und zwar in einer Dimension, welche nicht mehr vertretbar wäre.

Man kann diesen Sonderfall aber ganz einfach dadurch umgehen, indem man das Backup von Zeit zu Zeit löscht, und komplett neu anlegt. Das empfiehlt sich besonders dann, wenn man sein System komplett neu aufsetzen möchte.

Dazu muß man nur Folgendes in einem Terminalfenster eingeben (bei eingehängter externer Platte):

cd /mnt/disk
sudo rm -rf Backup

Verschiedene Backup-Stände erzeugen, mit Trick 17:
Eine herausragende Eigenschaft des ext3 Dateisystems von Linux ist die Möglichkeit sog. Hardlinks zu erzeugen. Dadurch ist es möglich, eine Kopie des Verzeichnissystems zu erstellen, ohne daß dafür zusätzlicher Speicherplatz verwendet wird. Das geht allerdings nur, wenn sich die Kopie auf dem gleichen Datenträger wie das Original befindet.

In unserem Fall wäre das Backup das Original (wir erstellen eine Kopie des Backups). Idealerweise, nachdem wir eine Sicherung mittel Backup-komplett.sh und der SystemRescueCD durchgeführt haben:

cd /mnt/output
cp -al Backup beliebiger-Name

Bei der nächsten Sicherung würden die Dateien in Backup abgeglichen werden, aber die Dateien in Verzeichnis „beliebiger-Name“ würden noch den alten Stand haben. Der Clou dabei ist, daß nur die veränderten Dateien zusätzlichen Speicherplatz verbrauchen. Dadurch kann man fast beliebig viele Sicherungsstände vorrätig halten, ohne daß der Platz knapp wird.

Wäre es nicht ratsamer, die Daten gleich mit einem Raid-System abzusichern?
Es spricht nichts dagegen, seinen Rechner in dieser Form zu konfigurieren. Eine zusätzliche Sicherung, wie sie hier beschrieben wird, ist aber dennoch notwendig, da nur so auch eine Absicherung gegen Fehlbedienung (z.B. versehentliches Löschen) geschaffen werden kann.

Kann ich die Sicherung auch auf eine andere Partition der gleichen internen Festplatte durchführen?
Nein. Das wäre keine Datensicherung mehr. Was ist, wenn die Platte kaputt geht? Dann sind alle Daten weg, auch die von der zweiten Partition.

Kann ich die Sicherung dann auf eine zweite interne Festplatte durchführen?
Nein. Es ist zwar prinzipiell möglich, aber nicht ratsam. Interne Festplatten unterliegen einfach einem höheren Verschleiß. Sie können verhältnismäßig leicht durch thermische und elektrische Einwirkungen zerstört werden. Daher ist es empfehlenswert, die Daten auf einen externen Datenträger zu sichern. Den kann man sich nämlich leichter in den Schrank legen, oder an einem sicheren Ort aufbewahren.

Kann ich jede beliebige externe Festplatte zur Sicherung benutzen?
(Hinweis: Dieser Absatz wurde am 30.09.2009 aufgrund von Hinweisen in den Kommentaren hinzugefügt).

Im Prinzip Ja, aber in der Praxis treten besonders bei externen USB-Festplatten mitunter einige sehr schwerwiegende Probleme auf. Es handelt sich dabei um einen Bug in Linux, welcher schon seit einiger Zeit bekannt ist, und wohl immer noch nicht gefixt wurde. Siehe HIER .

Es scheint sich dabei um ein Problem zu handeln, welches bei bestimmten Hardware-Konfigurationen auftritt. Einzig mögliche Abhilfe ist, den USB-Port auf USB-1.1 herunter zu konfigurieren. Entweder im BIOS, oder durch den Befehl „sudo modprobe -r ehci-hcd“. Das sollte jedoch wirklich nur dann in Erwägung gezogen werden, wenn keine andere Maßnahme hilft. Man sollte besonders darauf achten, daß man immer die aktuellste Version der SystemRescueCD einsetzt.

Hat der Rechner jedoch einen eSATA-Anschluß (oder einen Firewire-Port), kann man diesem Problem ziemlich elegant aus dem Weg gehen, wenn man die externen Festplatten darüber anschließt. Als netten Nebeneffekt bekommt man eine ca. doppelt so große Datenübertragungsrate bei der Sicherung. Ich habe schon mehrfach billige „Supermarkt-USB-Festplatten“ einfach in bessere externe Gehäuse mit eSATA-Anschluß umgebaut, und bin damit sehr gut gefahren.

Wie kann ich mein System aus dem Backup wieder komplett herstellen?
Aus thematischen Gründen wird dies in einem gesonderten Artikel behandelt werden.

Ein paar Worte zum Schluß:
Diese Anleitung wurde von mir nach bestem Wissen erstellt. Sollten darin Fehler enthalten sein, so werde ich diese korrigieren. Die Nutzung der beschriebenen Vorgehensweise erfolgt natürlich auf eigene Gefahr.

Ihr könnt euch diesen Artikel ausdrucken, oder auch abspeichern. Natürlich könnt ihr ihn auch gerne als Grundlage für einen eigenen Artikel zum Thema Datensicherung nehmen. In diesem Fall erwarte ich von euch nur einen Link auf meinen Artikel, als Quellenangabe.

Was ich aber gar nicht gerne sehe ist, wenn ihr den Artikel auf kommerziellen Webseiten veröffentlicht oder gar als eigene Arbeit ausgeben würdet. Dann werde ich euch den Arsch aufreißen, die Eier abschneiden und euch bei eurer Mutti verpetzen, versprochen.

Für Anregungen, Kritik, Huldigungen und Beschimpfungen gibt es die Kommentarfunktion.

Nachtrag 11.02.2010:
Restore eines Ubuntu-Systems

Die Schwierigkeit bei Restore-Beschreibungen liegt darin, daß es ganz verschiedene Szenarien dafür gibt. So macht es vom Umfang der Beschreibung her einen Unterschied, ob man „nur“ einen Backup-Stand zurückspielt (auf die bereits eingerichtete Platte), oder ob man noch die Partitionen und den Bootloader einrichten muß (z.B. auf eine neue Platte).

Diese Beschreibung beschränkt sich auf das Zurückspielen eines Backup-Standes auf die bereits vorhandene Platte. Dabei wird exakt der Stand des Backups wieder hergestellt, zwischenzeitlich neu hinzugekommene Dateien werden gelöscht.

Wir booten das System von der SystemRescueCD (oder einem entspr. Stick) mit diesen Parametern

rescuecd setkmap=de ar_disable

Mit „ar_disable“ wird verhindert, daß ein vorhandenes autorun-Script ausgeführt wird.

Die nachfolgenden Schritte lassen sich etwas einfacher in der grafischen Oberfläche vornehmen, daher führen wir nach dem Start startx aus.

Dort rufen wir das grafische Tool gparted auf, um die aktuell gültigen Bezeichner für die interne Festplate und das externe Sicherungslaufwerk abzulesen.

Im Terminalfenster gibt man dann diese Befehle ein:

mkdir /mnt/input
mkdir /mnt/output

Dann mounten wir die Partition, auf der sich der Backup-Satz befindet (z.B. /dev/sdb1 )schreibgeschützt:

mount -r /dev/sdb1 /mnt/input

Danach wird die interne Platte (z.B. /dev/sda2 ), auf die wir den Backup-Satz zurückspielen wollen, gemountet:

mount /dev/sda2 /mnt/output

Diese beiden Mount-Befehle sind der kritischste Teil bei der ganzen Restore-Aktion. Wenn man hier einen Fehler macht, kann man seine Daten durch die nachfolgenden Aktionen ins Nirvana schicken. Also, paßt auf!

Kontrolle:

cd /mnt/output
ls

Jetzt müssen einem die typischen Root-Verzeichnisse wie bin, boot, cdrom, dev, etc, usw… angezeigt werden.

Danach

cd /mnt/input
ls

Jetzt sollte man das Verzeichnis Backup und die Dateien Backup-rsync.sh, Backup-komplett.sh, exclude.dat angezeigt bekommen.

Wenn das nicht der Fall ist, dann habt ihr die Partitionen falsch gemountet, und solltet auf keinen Fall weitermachen (das System einfach mit halt herunterfahren)!

Der eigentliche Restore-Vorgang:

cd /mnt/input/Backup
rsync -avSHh --delete --progress . /mnt/output

Damit startet der Restore-Prozeß, welcher in dieser Konstellation i.d.R. nur wenige Minuten dauern wird, weil nur die unterschiedlichen Daten übertragen werden. Dabei sollten keine Fehlermeldungen auftauchen.

Anschließend mit halt den Rechner herunterfahren.

Es wird für die Restore-Thematik allerdings noch einen eigenen Artikel geben, der sich auch mit dem Wiederherstellen der Partitionen und des Bootloaders beschäftigen wird.

Posted in Linux, Software, Technik | Verschlagwortet mit: , , , , , | 88 Comments »