RSS-FEEDS

Alle Nachrichten bequem per RSS-Feed erhalten. Ein Klick auf das für Sie passende Themengebiet genügt: Alle RSS-Feeds im Überblick
x

Daten retten mit dd und dd_rescue

25.03.2009 - 09:18 Uhr von xyz xyz
Mit dem richtigen Tool-Gespann sichern Sie komplette
Partitionen.
Bild 1 von 5

Mit dem richtigen Tool-Gespann sichern Sie komplette Partitionen.

Mit dem Tool-Gespann dd und dd_rescue sichern Sie komplette Partitionen und stellen sie schnell und bequem wieder her. Auch Daten von bereits defekten Festplatten können Sie damit noch retten.

Anzeige

Wenn ein von Ihnen liebevoll konfiguriertes System auf dem Rechner nicht mehr starten will – egal ob Windows oder Linux – ist guter Rat teuer. Meist lassen sich persönliche Daten noch retten, die Neu-Installation kostet allerdings viel Zeit. Mit dem Konsolen-Tool dd können Sie diesem Fall vorbeugen: Klonen Sie Ihre Systempartitionen dann, wenn alles korrekt funktioniert und eingerichtet ist. Bei Bedarf stellen Sie sie schnell wieder her oder ziehen damit das System auf neuere, größere Festplatten um. Ist Ihre Festplatte dabei, sich ganz zu verabschieden, etwa weil zu viele defekte Sektoren einen sauberen Start verhindern, hilft Ihnen das Kommandozeilenwerkzeug dd_rescue weiter.

Backup leicht gemacht
Das Tool dd (Disk Dump) ist eines der ältesten Linux-Tools. Es kopiert Datenträger Sektor für Sektor, unabhängig von dem darüberliegenden Dateisystem und den darauf befindlichen Daten. Es eignet sich also vorzüglich, um Backups von Disketten, CD/DVDs, USB-Sticks oder eben Partitionen und Festplatten zu erstellen. Backups werden dabei als sogenannte Image-Dateien abgelegt, also als Dateien, die ein exaktes Abbild des gesicherten Mediums enthalten. Diese Dateien können Sie dann später mit dem gleichen Tool auf ein anderes Medium zurückspielen. Unter Linux haben gesicherte Images einen weiteren Vorteil: Sie können sie direkt in das Dateisystem einbinden, um auf die enthaltenen Daten zuzugreifen.
Alternativ verwenden Sie dd, um Inhalte direkt von einer Festplatte auf eine andere zu übertragen, diese also zu klonen. Ein weiterer Vorteil: Das Tool „dd“ gibt es in verschiedenen Varianten auch für Windows. Abgesehen von der Systempartition können Sie also Backups einzelner Partitionen auch unter Windows erstellen und wieder einspielen. Alle hier vorgestellten Tools und Befehle funktionieren mit dem Live-System Systemrescue-CD.

Klonen mit dd
Um eine Festplatte zu klonen, müssen Sie ein paar Dinge beachten: Weder der Quell-Datenträger noch der Ziel-Datenträger dürfen eingebunden (gemountet) sein, denn zwischenzeitliche Zugriffe verhindern eine komplette Spiegelung. Sollten Sie also eine Systemplatte übertragen wollen, müssen Sie auf ein Live-System zurückgreifen, etwa auf die Systemrescue-CD. Achten Sie außerdem darauf, dass die Ziel-Festplatte mindestens genau so groß oder größer ist als das Quell-Laufwerk. Ursprünglich kleinere Partitionen können Sie später mit einem Partitionierungs-Tool wie Parted Magic anpassen. Die Ziel-Festplatte muss nicht partitioniert sein, denn dd überträgt beim Klonen den kompletten Festplatteninhalt samt Partitionstabelle. Um nun den Inhalt einer Festplatte auf eine andere zu übertragen verwenden Sie folgenden Befehl:
dd if=/dev/sda of=/dev/sdb
wobei /dev/sda die zu kopierende Festplatte ist und /dev/sdb der Ziel-Datenträger. War die ursprüngliche Festplatte bootfähig, sollten Sie sicherheitshalber zusätzlich den MBR (Master Boot Record) übertragen. Dazu verwenden Sie ebenfalls dd, allerdings mit leicht veränderter Syntax:
dd if=/dev/sda of=/dev/sdb bs=512count=1
Mit dem Parameter „bs“ legen Sie die Größe der Blöcke, mit „ count“ die Anzahl der zu kopieren Blöcke fest, hier also ein Block mit der Größe von 512 Bytes.

Gesamte Festplatte sichern
Möchten Sie ein Backup einer bestehenden Festplatte oder Partition in einer Image-
Datei erstellen, benötigen Sie dafür natürlich genügend Speicherplatz auf einer weiteren Festplatte, um das Festplatten- oder Partitions-Image darauf unterzubringen. Außerdem muss auf der Ziel-Festplatte ein Dateisystem eingerichtet sein, das große Dateien speichern kann, etwa das unter Linux übliche Ext3- oder das Windows-eigene NTFS-Dateisystem. Binden Sie zunächst die Zielpartition (hier beispielsweise /dev/sdb1) in das Dateisystem ein, etwa mit
mount /dev/sdb1 /data1
Den Inhalt einer gesamten Festplatte (hier /dev/sda) übertragen Sie mit:
dd if=/dev/sda of=/data1/sda.img
Auch hier sollten Sie sicherheitshalber den MBR separat in einer Datei (hier: sda_mbr.img) sichern:
dd if=/dev/sda of=/data1/sda_mbr.imgbs=512 count=1
Wollen Sie später das gespeicherte Image zurück auf die ursprüngliche Festplatte übertragen, sollten Sie sie zunächst mit
dd if=/dev/zero of=/dev/sda
leeren. Damit verhindern Sie, dass Reste der ursprünglichen Dateien dem zurückgespielten Backup in die Quere kommen, etwa wenn Sie Windows nach einem Virenbefall durch das Backup ersetzen wollen. Wenn Sie dann wie oben beschrieben die Backup-Partition erneut mit „mount /dev/sdb1 /data1“ ins System einbinden, können Sie anschließend mit dem Befehl
dd if=/data1/sda.img of=/dev/sda
das Image (im Beispiel sda.img) auf die Platte (hier: /dev/sda) zurückspielen. Mit
dd if=/data1/sda_mbr.img of=/dev/sda
machen Sie die Platte wieder bootfähig.
Beachten Sie aber, dass Sie komplette Festplatten-Images nicht ohne Weiteres in das Dateisystem einbinden können, um auf einzelne Dateien zuzugreifen. Wie Sie das bewerkstelligen, erfahren Sie im Kasten „Images einbinden“.

Partitionen sichern
Statt einer ganzen Festplatte können Sie auch nur eine einzelne Partition sichern. Der Vorteil: Wenn Sie etwa Daten und System auf unterschiedlichen Partitionen untergebracht haben, müssen Sie bei Problemen mit dem System nicht die gesamte Festplatte überschreiben. Sie können dann beispielsweise das zerschossene System zurückspielen und die Daten, die Sie auf weiteren Partitionen untergebracht haben, unangetastet lassen. Einzelne Partitionen können Sie auch ohne großen Aufwand unter Linux einbinden und dort Dateien einsehen, bearbeiten oder ersetzen. Mehr dazu erfahren Sie im Kasten „Images einbinden“.
Außerdem sollten Sie die ursprüngliche Partitionstabelle sichern, vor allem, wenn Sie mehrere Partitionen oder gar erweiterte Partitionen in logischen Laufwerken untergebracht haben. Mehr dazu erfahren Sie im Kasten „Partitionstabelle sichern“. Der eigentliche dd-Befehl zum Sichern einer Partition ist dem oben vorgestellten ähnlich. Nachdem Sie die Ziel-Festplatte mit „mount /dev/sdb1 /data1“ eingebunden haben, müssen Sie lediglich die Gerätebezeichnung der Festplatte durch die der Partition (hier: /dev/sda1) ersetzen, etwa
dd if=/dev/sda1 of=/data1/sda1.img
Einen Überblick über alle Partitionen auf sämtlichen Festplatten liefert der Befehl „fdisk -l“.

Mehr Tipps zu dd

Partitionen zurück spielen
Um Partitionen zu rekonstruieren oder auf eine neue Festplatte zu übertragen, müssen Sie zunächst auf der Ziel-Festplatte die Partitionstabelle so einrichten, wie sie auf der ursprünglichen Festplatte war. Die einzelnen Partitionen können dabei zwar größer sein als zuvor, auf der sicheren Seite sind Sie aber, wenn Sie zunächst das Backup der ursprünglichen Partitionstabelle einspielen – wie im Kasten „Partitionstabelle sichern“ beschrieben. Sie können dann später mit einem Partitionierungs-Tool die Partitionen vergrößern, falls die Zielplatte mehr Platz bietet als vorher. Dazu können Sie beispielsweise das grafische Tool Gparted nutzen, das etwa die Live-Distribution Parted Magic mitbringt. Formatieren müssen Sie die Festplatte nicht. Nachdem Sie die Zielplatte mit „ mount /dev/sdb1 /data1“ eingebunden haben, und die Partitionstabelle wieder hergestellt haben, rekonstruieren Sie eine Partition mit
dd if=/data1/sda1.img of=/dev/sda1

Tipps zu dd
Das Tool dd hat einen entscheidenden Nachteil: Nach dem Start bleibt die Bildschirmausgabe leer; erst nach Abschluss des Kopiervorgangs erhalten Sie ein Zusammenfassung der kopierten Bytes. Allerdings können Sie anhand der zunehmenden Größe der Zieldatei den Fortschritt verfolgen. Öffnen Sie dazu ein neues Terminal-Fenster oder gehen mit <Strg>-<Alt>-<F3> auf die Konsole, wechseln dort mit „cd /data1“ in das Zielverzeichnis und geben anschließend den Befehl
watch -n5 ls -al
ein. Der Befehl „watch“ frischt die Ausgabe von „ls -al“ alle fünf Sekunden auf. Sie können den Kopiervorgang von dd beschleunigen, indem Sie die Standardblockgröße (Parameter „bs“) von 512 Bytes erhöhen. Dazu brauchen Sie aber entsprechend mehr Arbeitsspeicher. Bei mehr als 1 GB installiertem RAM können Sie obigen Befehl durch folgenden ersetzen:
dd if=/dev/sda1 of=/data1/sda1.imgbs=1024
Unter Umständen lässt sich der Parameter auch auf „2048“ erhöhen. Ist nicht genügend Arbeitsspeicher vorhanden, bricht dd den Kopiervorgang ab, und Sie müssen mit einem kleineren Wert neu beginnen.

Images teilen und komprimieren
Wenn Sie mit weniger Platz auskommen müssen, können Sie das dd-Image an das Komprimierungs-Tool gzip weiterleiten. Dazu erweitern Sie den Kopierbefehl folgendermaßen.
dd if=/dev/sda1 | gzip > /data1/sda1.img.gz
Zurückspielen können Sie das Image mit
gunzip -c /data1/sda1.img.gz| dd of=/dev/sda1
Wenn Sie ein gesichertes Image so aufteilen möchten, dass Sie es auf DVDs brennen können, verwenden Sie folgenden Befehl:
dd if=/dev/sda1 | gzip -c | split -b4200m - /data1/sda1.img.gz.
Vergessen Sie nicht den abschließenden Punkt, denn der Befehl generiert dann mehrere Dateien mit den Endungen „aa“, „ab“ etc. Später kopieren Sie alle Dateien von den DVDs wieder auf eine Partition und entpacken Sie mit:
cat /data1/sda1.img.gz.* | gzip -dc |dd of=/dev/sda1
Beachten sollten Sie bei diesen Befehlen allerdings Folgendes: Je mehr Befehle Ihre Sicherung durchläuft, desto fehleranfälliger wird das Backup. Außerdem dauert eine
Sicherung wegen der Komprimierung deutlich länger.

dd_rescue in der Not
Das Tool dd_rescue basiert auf dd, ist allerdings darauf spezialisiert, Daten von Platten mit defekten Sektoren auszulesen – etwa wenn die Festplatte langsam den Geist aufgibt und aufgrund dessen nicht mehr ordnungsgemäß in Windows oder Linux eingebunden werden kann. dd_rescue liest Daten so lange mit einer Sektorgröße von 512 Bytes aus, bis es auf einen defekten Sektor trifft. Dann reduziert es die Blockgröße so weit, bis es alle noch lesbaren Daten kopiert hat; und fährt dann mit der ursprünglichen Blockgröße fort. So lange die Festplatte noch einigermaßen intakt ist, stehen die Chancen gut, dass Sie auf diese Weise Ihre Daten noch retten können.
Voraussetzung ist, dass das von dd_rescue erstellte Image auf einer frischen, mit Ext3- oder NTFS-formatierten Festplatte Platz hat. Außerdem sollten Sie über genügend Platz verfügen, um von dem gesicherten Image eine weitere Kopie erstellen zu können, von der Sie dann Ihre Rettungsversuche starten. Wollen Sie eine NTFS-Partition reparieren, müssen Sie auf eine weitere Festplatte zurückgreifen, auf die Sie das erstellte Image zurückspielen. Images von FAT32- oder Ext3-Partitionen können Sie dagegen direkt mit den entsprechenden Tools unter Linux reparieren, mehr dazu später.

Daten retten ...
Booten Sie zunächst Ihren Rechner mit der defekten Festplatte von der CHeft-DVD, und starten Sie Systemrescue-CD. Erstellen Sie dort ein beschreibbares Verzeichnis, etwa mit
mkdir /data1 && chmod 777 /data1
und binden Sie dort die Ziel-Partition (hier /dev/sdb1) beispielsweise mit „mount /dev/sdb1 /data1“ ein. Die Rettungsaktion starten Sie dann mit dem Befehl:
dd_rescue /dev/sda1 /data1/sda1.img
Verfahren Sie ebenso mit allen Partitionen auf der defekten Platte. Unter Umständen müssen Sie damit rechnen, dass der Kopiervorgang mehrere Stunden oder mehr als einen Tag dauert. dd_rescue zeigt Ihnen den Fortschritt der Rettungsaktion an – je weniger Prozente Sie neben dem Eintrag „err“ sehen, desto besser.

... und reparieren
Nachdem die Partitionen gesichert und kopiert sind, können Sie mit der Reparatur beginnen. Für FAT32 und das Linux-übliche Dateisystem Ext3 bringt Linux die entsprechenden Tools bereits mit. Ein Image mit FAT32-Dateisystem reparieren Sie mit dem Befehl
fsck.vfat /data1/sda1.img
Ext3-Dateisysteme mit dem Kommando
fsck.ext3 /data1/sda1.img
Danach können Sie die Images wie im Kasten „Images einbinden“ beschrieben in Ihr Linux-System einhängen und Ihre Daten sichern. Welche Dateisysteme fsck unterstützt, erfahren Sie, wenn Sie „fsck“ an der Konsole eingeben und zweimal <Tab> drücken. NTFS-Images müssen Sie zunächst auf eine frische, bereits entsprechend partitionierte Festplatte übertragen, sie dann an einen funktionierenden Windows-PC anschließen und von dort mit dem Windows-Befehl „chkdsk“ reparieren.

Partitionstabelle sichern und Images einbinden

Partitionstabelle sichern
Informationen zu primären Partitionen werden im Master Boot Record (MBR) gespeichert, der auch die Startdateien eines Systems enthält. Haben Sie lediglich primäre Partitionen auf Ihrer Festplatte, reicht es, wenn Sie den MBR sichern und später wiederherstellen, wie im Artikel beschrieben. Enthält Ihre Festplatte allerdings zusätzlich eine erweiterte Partition mit logischen Laufwerken, müssen Sie auf das Tool sfdisk (bei dem Systemrescue-Tool enthalten) zurückgreifen, um die Partitionstabelle zu sichern. Sichern Sie zunächst wie beschrieben den MBR. Erstellen Sie anschließend mit dem Befehl
sfdisk -d /dev/sda > backup-sda.sf
ein Backup der erweiterten Partitionstabelle. Das Backup spielen Sie folgendermaßen wieder ein: Zunächst übertragen Sie wie beschrieben das Backup des MBR. Anschließend spielen Sie die erweiterte Partitionstabelle mit
sfdisk /dev/sda < backup-sda.sf
auf die Zielplatte.
Beachten Sie unbedingt die Reihenfolge. Bevor Sie dann das Backup Ihrer Partitionen einspielen, sollten Sie den Rechner neu starten.

Images einbinden
Um auf Dateien in gesicherten Partitions-Images zugreifen zu können, binden Sie diese unter Linux mit Hilfe des Loop-Devices in das System ein. Dazu dient etwa folgender Befehl:
mount -o loop,ro /data1/sda1.img /data2
Der Befehl bindet das Image im Nur-Lesen-Modus in das Verzeichnis /data2 ein. Dort können Sie nun auf den Inhalt der Image-Datei zugreifen. Wenn Sie die Dateien im Image auch verändern wollen, müssen Sie den Parameter „ro“ samt davor stehendem Komma einfach weglassen. Dann können Sie die Dateien bearbeiten, als sei das Image eine normale Festplatte. Änderungen werden sofort übernommen. Mit „umount /data2“ heben Sie die Einbindung wieder auf.

Partition aus einem Festplatten-Image einbinden:
Ein wenig komplizierter ist es, wenn Sie eine Partition einbinden wollen, die in einem kompletten Festplatten-Image enthalten ist. Dazu müssen Sie zunächst den sogenannten Offset ermitteln, also den Punkt an dem die Partition im Image beginnt. Dazu verwenden Sie den Befehl „parted“. Zunächst laden Sie das Image mit
parted /data1/sda.img
in das Programm. Anschließend wechseln Sie mit „unit“ gefolgt von <Return> und <B> gefolgt von <Return> in den Byte-Modus. Tippen Sie „print“ und bestätigen Sie mit <Return>, dann erhalten Sie die interne Partitionstabelle des Images. Neben der Partitionsnummer in der Rubrik „Start“ finden Sie die gewünschte Offset-Nummer. Mit „quit“ verlassen Sie parted wieder. Nun binden Sie die gewünschte Partition mit folgendem Befehl ein:
mount -o loop,ro,offset=<Offset-Nummer>/data1/sda.img /data2
in das Dateisystem ein, den abschließenden Buchstaben „B“ lassen Sie dabei weg.

Quelle: Copyright (C)2008 www.pcwelt.de
Kommentare
Der Nutzer erklärt sich mit der Geltung der aktuellen Terms and Policies von DISQUS einverstanden.
Hinweis: Kommentare können entfernt werden, insbesondere wenn diese rechtswidrig, anstößig, feindselig sind, gegen die guten Sitten verstoßen oder die geregelte Kommunikation der Nutzer untereinander erschweren oder wenn ein entsprechender begründeter Verdacht besteht.
powered by Disqus
Anzeige
Anzeige
Download-Charts im Mai
zu den Monatscharts  
Anzeige
Handy-Suche
Anzeige
Impressum AGB Datenschutz KundenserviceMediadatenfreenet AGJobsSitemap
gekennzeichnet mit
JUSPROG e.V. - Jugendschutz
freenet ist Mitglied im JUSPROG e.V.