SD-Karte mit Linux sichern und klonen

Ubuntu Logo

Weil die SD-Karte auch nicht ewig lebt, hier eine Anleitung, wie man Images von SD-Karten unter Ubuntu erstellt und klont ohne dazu irgendwelche Software von Drittanbietern zu verwenden. Das geht nämlich auch hervorragend mit Bordmitteln. Dazu stelle ich drei Methoden vor:

  • Die manuelle Methode mit dd über ein Image:
    Hier wird ein Image als BackUp erzeugt, das man dann auf eine neue SD-Karte schreiben kann.
  • Eine einfache Methode mit einem Kartenleser, bei der man durekt von Karte zu Karte kopiert.
  • Die Reperaturmethode, wenn die SD-Karte defekte Sektoren hat und man die Daten retten möchte. Sie funktioniert in der Regel auch bei schwierigen Fällen, in denen sich SD-Karten mit den vorigen beiden Methoden nicht klonen lassen.

Allerdings gilt es einige Punkte zu beachten:
! Beim Klonen müssen die Sektorengrößen gleich sein. Bei den meisten kleinen SD-Karten ist die Sektorengröße 512 kb , was man mit sudo fdsik -l im Terminal überprüfen sollte.
! SD-Karten lassen sich nicht so einfach von größeren Karten auf kleinere Karten kopieren. Dazu muss man mit gparted Partitionen anpassen und auch partitionsweise kopieren.
! Auch angebllich gleich große SD Karten können Abweichungen in der Größe haben. Auch das lässt sich mit sudo fdsik -l festetllen. Die Zielkarte muss gleich viele oder mehr Sektoren haben.
! Bei Problemen sollte man einen anderen Kartenlesen, einen Kartenleser ohne USB-Kabel oder einen internen Kartenleser verwenden.

Die manuelle Methode mit dd

Zuerst stellt man die Device-ID der SD-Karte im Kartenleser mit lsblk fest. Jeder Datenträger hat eine Kennung mit drei Buchstaben (gewöhnlich sdx) und die Partitionen werden dahinter mit einer Ziffer angegeben.

:~$ lsblk

Die Ausgabe zeigt alle Datenträger mit ihren Partitionen, die am Gerät angeschlossen sind.

SD-Karte sichern
Ausgabe von lsblk

Die SD-Karte erkennt man an der Größe und in diesem Fall am dritten Buchstaben in sdc, da sie nach der Festplatte sda gemountet wurde. Je nachdem, wie man die SD-Karte verbindet, kann sie auch z.B. als mmcblk0 angezeigt werden.

Erstellen der img-Datei

Das Erstellen des Images des Datenträgers im home-Verzeichnis des aktuellen Benutzers erfolgt mit

:~$ sudo dd if=/dev/sdc of=~/raspberry.img

Dabei gibt es aber keine Fortschrittsanzeige, so dass man geduldig abwarten muss, bis der Befehl abgearbeitet wurde.
Sobald das Image komplett auf die Festplatte geschrieben wurde, wirft man die SD-Karte aus und steckt eine leere SD-Karte gleicher Größe an. Ist die neue SD-Karte größer, dann hilft gparted nach dem Kopieren weiter. Mit lsblk wird wieder die Device-ID ermittelt.

SD-Karte sichern
Ausgabe von lsblk

Wie man hier sieht, muss die Ziel-SD-Karte nicht zwingend die selbe Device-ID bekommen.

Rücksichern der img-Datei

Die Ziel-SD-Karte muss zwingend eine Partitionstabelle msdos enthalten, die man mit gparted erstellen kann, denn ansonsten wird sie vom System nicht gefunden.

Das Image wird nun auf die Karte zurück geschrieben, was je nach USB-Geschwindigkeit und Größe des Images ziemlich lange dauern kann. Bei einer 16 GB-Karte kann man da schon mal mit dem Hund raus gehen.

Tipp: Ab Ubuntu 16.04 und der Version 8.24 der core-utils kann man für dd den Fortschritt anzeigen lassen, indem man an den dd-Befehl hinten status=progress anhängt. Die Version der core-utils kann man mit dd –version feststellen.

:~$ sudo dd if=~/raspberry.img of=/dev/sdb status=progress

Um sicher zu stellen, dass auch gepufferte Daten auf die Karte geschrieben werden, verwendet man

:~$ sync

Komfortabel kopieren

Mit einem Kartenleser, der Zugriff auf zwei SD-Karten erlaubt, ist das Kopieren von SD-Karten am komfortabelsten. Ich verwende dazu den Hama Multi-Kartenleser 8 in 1 (u.a. microSD/SDHC, SD/SDHC, MMC, USB 2.0), den man bei Amazon für knapp 5 Euro bekommt.

Hama Multi-Kartenleser 8 in 1
Hama Multi-Kartenleser 8 in 1

Die Ziel-SD-Karte kommt mit einem Adapter in den oberen Schacht und ihre Bezeichnung wird wieder mit lsblk festgestellt. Nehmen wir an, ihre Bezeichnung ist sdc. Wie oben schon angemerkt, muss die SD-Karte eine Partitionstabelle besitzen, sonst schlägt dd mit der Meldung „Kein Medium gefunden“ fehlt. Die zu kopierende SD-Karte kommt in den unteren Schacht (ich nenne sie hier sdb) und jetzt wird kopiert mit

:~$ sudo dd bs=512 if=/dev/sdb of=/dev/sdc

Vorsicht, denn dd überschreibt gnadenlos alles! Man muss sich sicher sein, was die Quelle (if=) und was das Ziel (of=) ist!

Danach noch die evtl. gepufferten Daten schreiben mit

:~$ sync

Hartnäckige Fälle

Funktionieren die beiden oben genannten Methoden nicht, gibt es unter Ubuntu das Paket gddrescue. Dazu installiert man mit

:~$ sudo apt update
:~$ sudo apt install gddrescue ddrescueview 

Das Kopieren von einer SD-Karte auf eine andere erfolgt mit

:~$ sudo ddrescue -f -n /dev/sdb /dev/sdc logfile1

Auch hier ist wieder Vorsicht bei den Laufwerksbezeichnugen geboten.
Sollte die SD-Karte beschädigt sein, kann man folgendes versuchen:

:~$ sudo ddrescue -d -f -r3 /dev/sde /dev/sdx logfile2

Hier versucht ddrescue bei Lesefehlern dreimal (r=3) defekte Sektoren zu lesen. Mit dem Parameter -d wird der Cache des Kernels umgangen, was nicht auf allen System funktioniert. ddrescue kann auch Images erzeugen, indem man als Ziel eine Datei angibt:

:~$ sudo ddrescue -f -r3 /dev/sde /home/user/image.img logfile3

Dieses Image kann man wie bei der ersten Methode mit dd auf eine neue Karte schreiben.
Mit dem Tool ddrescueview, lässt sich das Logfile grafisch darstellen.

:~$ ddrescueview logfile1

Falls der Beitrag weitergeholfen hat, wäre eine Rückmeldung in den Kommentaren oder über das Kontaktformular nett. Danke!

Buy Me a Coffee at ko-fi.com

You May Also Like

5 Comments

  1. Vielen Dank für den Artikel! Ich konnte mit ddrescue eine SD Karte, die anfing kaputt zu gehen noch klonen und der Klon war wieder voll einsatzfähig (unter altem Ubuntu 12)! Hat mir eine Menge Zeit und Ärger gespart.

  2. Hallo, ich bin neu bei Linux, habe mir auf einen Laptop LinuxMint geladen.Möchte mit dem Befehl dd eine MiniSD Karte klonen, Betriebssyszem vom Holzvergaser.
    Bis hierhin ist alles soweit klar:~$ sudo dd if=/dev/sdc of=~/raspberry.img
    Meine Frage muss ich bei meinem Klone auch raspberry.img eingeben?

  3. Hallo Sandra,
    Der Befehl schreibt den Inhalt von sdc in eine Datei mit Namen raspberry.img. Diesen Dateinamen kannst Du frei wählen und die Datei wird in Dein Home-Verzeichnis geschrieben.
    Dabei ist „if“ (InFile) die Quelle und „of“ (OutFile) ist das Ziel.
    LG!

  4. Hallo Thomas, vielen lieben Dank, okay ich hab die Sicherung von meinem Holzvergaserofen jetzt auf der Festplatte.
    Um das jetzt auf eine neue Karte zu bekommen:
    Frage: Die Ziel-SD-Karte muss zwingend eine Partitionstabelle msdos enthalten, die man mit gparted erstellen kann, denn ansonsten wird sie vom System nicht gefunden.
    Könntest Du mir bitte auch noch das erklären, mit dem gparted?
    Dankeschön

  5. Öffne ein Termin (STRG + ALT + T) und gib dort sudo gparted ein. Rechts oben wählst Du in gparted das Laufwerk aus (Vorsicht! Besser mit lsusb in einem weiteren Terminal prüfen, das es auch garantiert das richtige Laufwerk ist!). Dann im Menü evtl. vorhandene Partitionen löschen, dann die Partitionstabelle erstellen auswählen, das Format (hier msdos) wählen und dann eine neue Partition mit Neu erstellen. Jede Aktion kannst Du gleich mit STRG + Eingabetaste ausführen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Aus persönlichen Gründen...

... kann ich den Blog im Moment leider nicht wie gewohnt betreuen und Anfragen zeitnah beantworten. Lediglich die technische Funktionalität versuche ich aufrecht zu erhalten. Sollte es trotzdem was Neues hier geben, dann schreibe ich eine Info in die Telegram-Gruppe.


In der Telegram-Gruppe können Sie sich weiterhin mit anderen Lesern von Împuşcătura austauschen.

Zur Telegram-Gruppe