Wie zieht man den Inhalt einer SD-Karte mit Linux auf eine andere oder größere um?

 

von Ulf Schleth

Irgendwann wird selbst die größte SD-Karte zu klein. (Foto: Ulf Schleth)

Irgendwann wird selbst die größte SD-Karte zu klein. (Foto: Ulf Schleth)

Speicherplatz wird immer irgendwann knapp. Aus den verschiedensten Gründen. Häufig sind Videos schuld. Jetzt, wo alle Kameras 4K haben müssen, werden selbst die langweiligsten Familienfilme, der 10tausendste Hecht vom letzten Tauchgang und die bedeutungslostesten Youtuber-Videos in höchster Qualität gedreht. Der Nachteil: Die alten SD-Karten reichen nicht mehr. Also muß eine neuere, größere her. Oder Du hast ein Gerät gekauft, das eine SD-Karte enthält, die aber das billigste ist, das man für Geld kaufen kann und Du möchtest diese Karte durch eine qualitativ hochwertigere ersetzen, die nicht bei der ersten Gelegenheit kaputt geht.

Vielleicht möchtest Du aber auch einfach nach ein paar Jahren Benutzung Deine alte SD-Karte durch eine neue ersetzen, weil Du weißt, daß die vielen Schreibzugriffe die alte Karte nach und nach kaputt machen. Ein Vorteil beim Wechsel der Karte ist häufig auch, daß eine neuere Karte die Lese-und Schreibzugriffe des zugehörigen Gerätes etwas beschleunigt.

Die hier vorgestellte Methode verwendet zum Kopieren Deiner SD-Karte das Linux-Kommandozeilentool dd. Es klont einfach den Inhalt der kompletten Speicherkarte – ich gehe dabei davon aus, daß Du in der Lage bist, ein Terminal-Fenster zu öffnen und mit der Kommandozeile umzugehen. Das tolle an dieser Methode ist, daß sie funktioniert, egal was auf der Karte ist. Seien es nur Daten oder aber ein Betriebssystem, wie Raspbian OS, ob es die SD-Karte aus einer OpenTX- oder EdgeTX-Fernsteuerungs ist, oder etwas ganz anderes. Sie funktioniert sogar mit Handy-Speicherkarten. Mit Karten, die als „interner Speicher“ formatiert sind habe ich das allerdings noch nicht probiert, also Vorsicht: ich kann mir nicht vorstellen, daß es damit funktioniert, wenn die Karte dabei vergrössert werden soll.

Als erstes achte darauf, daß Du das schnellste Karten-Lesegerät benutzt, das Dir zur Verfügung steht, zum Beispiel das im Computer eingebaute, oder ein anderes, das über USB 3.0 am Rechner hängt. Wenn Du bei den folgenden Operationen rätselhafte Probleme hast, prüfe alle USB-Stecker und vor allem Kabel und besorge Dir im Zweifel ein richtig gutes (darf bis 20 Euro kosten).

Stecke jetzt die alte SD-Karte in das Lesegerät.
Benutze auf der Kommmandozeile den Befehl lsblk um die Geräteliste zu sehen und identifiziere Dein USB-Gerät. Die Ausgabe dürfte in Etwa so aussehen:

mmcblk0 179:0 0 240M 0 disk
└─mmcblk0p1 179:1 0 240M 0 part /media/user/82B8-C102

Wenn Du nicht sicher bist, ob das das richtige Gerät ist, ziehe die Karte noch einmal aus dem Lesegerät und wiederhole diesen Vorgang. Vergleiche auch den Speicherplatz der Karte mit dem hier ausgegebenen, bis Du 100% sicher bist, daß Du Deine Karte erkannt hast. Stelle nun sicher, daß die Partitionen der Karte nicht auf dem Rechner eingebunden sind:

umount /dev/mmcblk0p1

Nun willst Du die ganze Karte klonen. Wenn Du magst, erstelle Dir ein backup -Verzeichnis. Achte darauf, daß Du die Pfadnamen entsprechend Deiner Umgebung änderst und daß Du für das Klonen mit dem Befehl dd den Namen des Gerätes, nicht den einer einzelnen Partition angibst, hier also /dev/mmcblk0:

sudo dd if=/dev/mmcblk0 of=/home/user/backup/sdcard.img bs=1M

Yippieh! Du hast jetzt den Inhalt Deiner alten Karte in die Datei sdcard.img gesichert. Wenn Du möchtest, kannst Du die Datei als Backup behalten. Entferne jetzt die alte und lege die neue Karte ein. Identifiziere die Partitionen der neuen Karte wie oben beschrieben und unmounte sie:

umount /dev/mmcblk0p1

Und nun machen wir den Vorgang genau wie eben, nur umgekehrt und kopieren den Inhalt der alten SD-Karte von der Sicherungsdatei auf die neue Karte:

sudo dd if=/home/user/backup/sdcard.img of=/dev/mmcblk0 bs=1M

Jetzt hast Du Deine alte SD-Karte geklont und kannst mit der neuen arbeiten. Es sei denn, die neue Karte ist größer als die alte; wenn Du den neuen Speicherplatz nutzen willst, mußt Du Deine Partition vergrößern. Du kannst das zum Beispiel mit dem Programm gparted machen. Mache in gparted einfach einen Rechtsklick auf Deine Partition, klicke auf resize/move und gib den neuen neuen, maximalen Speicherplatz an. Du mußt dazu natürlich wissen, welche Partition Du vergrößern willst. Sollte es sich um eine Karte aus Deinem Raspberry Pi handeln, starte lieber von der neuen Karte und starte mit

sudo raspi-config

den Raspberry-Konfigurator, klicke darin auf Advanced Options und danach auf Expand Filesystem. Du kannst das auch auf der Kommandozeile machen mit

raspi-config --expand-rootfs

Nach einem Neustart verfügt Dein Raspberry Pi über den neuen Speicherplatz.

Dieser Text gefällt Dir?

Kommentare

  1. Hallo,
    Ja, der Kartenwechsel funktioniert gut, allein die Vergrößerung der Partition auf der neuen Micro SD Karte, mit gparted funktioniert nicht. Was habe ich falsch gemacht?
    Hinsichtlich der Arbeitsgeschwindigkeit muss ich sagen: „Es dauert ewig“.
    Sollte man eventuell nur A2 Karten mit doppelter Lese- und Schreibgeschwindigkeit verwenden?
    MfG Thomas

  2. hi thomas,
    schwer zu sagen was beim vergrössern schief läuft ohne genaue beschreibung. ganz generell kann ich sagen, dass das mit grub nur geht, wenn dein linux das verwendete filesystem unterstützt. welches verwendet wird, müsstest du in grub oder auch in ‚disks‘ sehen. wenn das zB exfat ist, müsstest du in ubuntu >= 22.04 noch ein ’sudo apt install exfat-fuse exfatprogs‘ machen, danach (und evtl. nach neustart von grub) könnte das klappen. und was die geschwindigkeit angeht: klar, je schneller die karte desto besser. prüfe aber vorher dein lesegerät, welche geschwindigkeiten es unterstützt. wenn es alt ist, nützt dir auch eine schnelle karte nichts. dann hilft nur abwarten und tee trinken.

  3. Was passiert denn mit der UUID?
    wird dieses ebenfalls geklont, oder muss diese dann noch angepasst werden?

    Kann man auch von einer SD auf eine M2 SSD klonen?

    Viele Grüße
    Sebastian

  4. Hallo Sebastian, das sind interessante Fragen, die mich bisher beim Klonen nicht interessiert haben. Meine Antwort ist also nur eine theoretische Vermutung: Ich würde beide Fragen bejahen. Da man die UUID mit sudo sfdisk –disk-id /dev/nvme1n1 (device-namen ersetzen nicht vergessen) ändern können soll, müsste sie im Filesystem bzw. in der Partitionstabelle gespeichert sein und also mitkopiert werden. Und ich wüsste auch nicht, was dagegenspräche, auf eine SSD zu klonen. Sei eingeladen, Deine Erfahrungen in einen weiteren Kommentar zu schreiben und immer ans Backup denken :)

Kommentar schreiben

Die E-Mail-Adresse wird nicht angezeigt. Felder mit * müssen ausgefüllt werden.

*

*