theHacker's Blog
– It's just a glitch in the Matrix –

Alte Datenträger mit ddrescue als Images archivieren

Aktuell bin ich grade dabei, alte Fotos zusammenzusuchen und diese in meinen zentralen Foto-Ordner zu legen. Gestern bin ich dabei auf meine alten CD-Aufbewahrungsboxen gestoßen, wo noch eine Sicherung eines ehemaligen Rechners auf 18 Einzel-CDs rumliegt.

Da ich heutzutage nun wirklich keine Speicherplatz-Probleme mehr habe, wollte ich diese CDs in Form von Images auf meine NAS bringen. Das hat zugleich den Vorteil, dass wenn die CDs mal altersschwach werden, ich immer noch eine Sicherung von ihnen habe.

In diesem Artikel zeige ich euch, wie ihr das Tool ddrescue nutzen könnt, um optische Medien (CDs oder DVDs) in ein Image umzuwandeln.

Installation

Normalerweise ist das Paket nicht installiert. Es kann einfach mit

sudo apt install gddrescue

installiert werden. Je nach Distribution heißt das Paket entweder gddrescue oder nur ddrescue.

Image erzeugen

Um eine CD nun zu einem Image umzuwandeln, legen wir die CD zuerst in das optische Laufwerk ein.

Für den nächsten Schritt müsst ihr wissen, welche Gerätedatei eure Betriebssystem für das CD-Laufwerk zugewiesen hat, z. B. /dev/sr0. Meist ist ein symbolischer Link /dev/cdrom definiert, den man verwenden kann.

Wir rufen ddrescue nun mit folgender Befehlszeile auf:

ddrescue -b2048 /dev/cdrom safecopy-cd2.img /tmp/ddrescue.map

Mit -b2048 stellen wir die Blockgröße für CDs ein (siehe Beschreibung des Parameters im Manual). Die nächsten Parameter geben die Quelle an, also unser CD-Laufwerk, und das Ziel, in diesem Fall eine Datei safecopy-cd2.img, in der am Ende das CD-Image steht.

Der letzte Parameter ist wichtig. Er bestimmt die Map-Datei, die ddrescue für diese CD benutzt. Hier drin speichert ddrescue seinen Fortschritt, welche Teile der CD bereits kopiert sind und wenn es Probleme gibt, wo auf der CD Lese-Probleme aufgetreten sind.

Hat unsere CD keine Probleme, so können (und müssen!) wir diese Datei am Ende wieder weglöschen. Sollte es aber zu Problemen während des Lesens kommen, so wird diese Datei wichtig.

Wichtig: Wenn ihr auf diese Weise mehrere Medien in Images umwandelt, denkt daran, die Map-Datei zu löschen, nachdem ein Medium erfolgreich abgeschlossen ist. Vergesst ihr das und verwendet dieselbe Map-Datei für ein weiteres Medium, so wird ddrescue nichts oder nicht alles kopieren, weil er davon ausgeht, dass bereits alles erledigt ist.

Am Ende sieht die Ausgabe dann wie folgt aus:

GNU ddrescue 1.22
     ipos:  669843 kB, non-trimmed:        0 B,  current rate:   2789 kB/s
     opos:  669843 kB, non-scraped:        0 B,  average rate:   2647 kB/s
non-tried:        0 B,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:  669880 kB,   bad areas:        0,        run time:      4m 12s
pct rescued:  100.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Finished

Image einhängen

Die angelegten Images kann man nun mit dem mount-Befehl ins Dateisystem einhängen:

sudo mount -o ro safecopy-cd2.img /mnt/safecopy-cd2

Hierfür benötige ich ein Verzeichnis, in das ich mounten kann und Root-Rechte. Das ist nicht bequem!

Für einen bequemen Weg habe ich eine Weile suchen müssen…

Ich verwende als Datei-Manager Dolphin. Der logische Ansatz war, bei den Einstellungen unter "Dienste" zu suchen, ob es einen Dienst gibt, der CD-Images einfach per Klick einbinden kann. Ja, gibt es, sogar zwei. Allerdings funktionieren beide Lösungen nicht.

"Mount ISO image - here of elsewhere" tut einfach gar nichts. Und der "ISO Mounter-Unmounter" warnt bereits in seiner Beschreibung im ersten Satz in Großbuchstaben

** DO NOT INSTALL with Dolphin Add-On Installer

und gibt eine komplizierte Anleitung. Im Internet findet man ergänzende Anweisungen, um die Sache zum Laufen zu bringen.

Ich habe das gar nicht erst ausprobiert. 😒

Stattdessen habe ich folgende Lösung gefunden, die wirklich ganz einfach ist: Installiert man das Paket gnome-disk-utility, wird in Dolphin automatisch ein Punkt "Disk Image Mounter" hinzufügt, mit dem man das Image mit einem Klick einbinden kann.

Warum ddrescue statt nur dd?

Zum Schluss gehe ich noch kurz auf die Frage ein, wieso die Images nicht einfach mit dd erzeugen, das in jeder Linux-Distribution schon enthalten ist. Warum ddrescue?

ddrescue ist eigentlich ein Datenwiederherstellungs-Tool, dass mit dd nichts zu tun hat, außer, dass beide dieselbe Aufgabe "kopiere Daten von A nach B" erledigen. Alte Medien haben vielleicht Lese-Probleme, drum ist ddrescue die bessere Lösung.

Während dd sequentiell einfach stur von vorne nach hinten Daten kopiert, passt sich ddrescue an Probleme an, wenn das Medium beschädigt ist und sich bestimmte Stellen nicht auslesen lassen. ddrescue verwendet spezielle Algorithmen, um möglichst schnell möglichst viele Daten zu kopieren, um das kaputte Medium nicht noch weiter zu strapazieren.

In dem mehr-phasigen Ablauf macht sich ddrescue erst am Ende an die schwierigen Stellen und versucht mehrfach, die kaputten Blöcke auszulesen und so möglichst viel zu retten.

Deswegen hat ddrescue auch eine hübsche Fortschrittsanzeige, die uns informiert, an welcher Stelle der Kopiervorgang ist und wie lange es noch dauert. Ein weiterer Vorteil gegenüber dem einfachen dd.

Eingangs hatte ich geschrieben, dass ich 18 CDs zu archivieren hatte. Von diesen 18 CDs hatten 2 CDs tatsächlich Lesefehler! Während dd mir hier keine Rückmeldung gegeben hätte und ich mich nur gewundert hätte, dass der Befehl niemals terminiert, erhalte ich mit ddrescue folgende Ausgabe:

     ipos:  608585 kB, non-trimmed:        0 B,  current rate:       0 B/s
     opos:  608585 kB, non-scraped:   27357 kB,  average rate:      56 B/s
non-tried:        0 B,  bad-sector:   826368 B,    error rate:      85 B/s
  rescued:  643375 kB,   bad areas:      931,        run time:  3h 14m 37s
pct rescued:   95.80%, read errors:     1780,  remaining time:    108d 17h
                              time since last successful read:      1m 16s
Retrying bad sectors... Retry 3 (forwards)

Während schon 95,8% der CD erfolgreich gelesen und in die Image-Datei geschrieben worden sind, kämpft ddrescue an den restlichen Stellen, sie häppchenweise vielleicht doch noch auszulesen. Man sieht an den Geschwindigkeitsangaben schon, dass dies mehrere (viele, zu viele) Tage dauern kann.

Die obige Ausgabe ist bereits von einem weiteren Aufruf von ddrescue, wo ich mit entsprechenden Befehlszeilen-Parametern angewiesen habe, die schlechten Blöcke mehrfach erneut versuchen, einzulesen.

Weitere Infos zur Datenrettung mittels ddrescue werde ich in einem weiteren Artikel zusammenstellen.


Wie handhabt ihr eure alten CDs und DVDs?
Hinterlasst gerne eine Kommentar.

Kommentare zu diesem Artikel

Schreib einen Kommentar zum Artikel

CAPTCHA Das Internet ist leider voller Bots. 🙁 Bitte gib den obenstehenden Code ein.
Falls du den Code nicht lesen kannst oder dir unsicher bist, klick einfach hier, um einen neuen Code zu generieren.

Mit Abschicken des Formulars bestätigst du,
die Datenschutz-Infos gelesen zu haben.