%20eines%20Wechseldatentr%C3%A4gers.png)
Ich hatte ein32 GB SD-Kartemit dieser Struktur (oder sehr ähnlich):
luis@Fresoncio:~$ sudo fdisk -l
Disk /dev/mmcblk0: 29.2 GiB, 31393316864 bytes, 61315072 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xec4e4f57
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 1 125000 125000 61M c W95 FAT32 (LBA)
/dev/mmcblk0p2 125001 33292287 33167287 15.8G 83 Linux
/dev/mmcblk0p3 33292288 61315071 28022784 13.4G 83 Linux
Und ichübertragen(von einem anderen Computer, also die Geräte wo sda
und sdb
) es zu einem (ich wähle das falsche)64 GB SD-Karteüber dd
( dcfldd
, tatsächlich):
# dcfldd if=/dev/sda of=/dev/sdb bs=1M
Meine neue 64 GB SD-Karte ist jetzt:
luis@Fresoncio:~$ sudo fdisk -l
Disk /dev/mmcblk0: 59.5 GiB, 63864569856 bytes, 124735488 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xec4e4f57
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 1 125000 125000 61M c W95 FAT32 (LBA)
/dev/mmcblk0p2 125001 33292287 33167287 15.8G 83 Linux
/dev/mmcblk0p3 33292288 61315071 28022784 13.4G 83 Linux
Nun, im Moment kein Problem, aber jetzt habe ich die 32 GB SD-Karte nicht mehr, nur die 64 GB SD-Karte ist noch übrig, und ich möchte sie wieder auf eine leere 32 GB SD-Karte übertragen.
In diesem Fall gehe ich davon aus, dass ich nicht verwenden kann dd
oderdcfldd
Was kann ich tun? Kann ich dd
oder verwenden dcfldd
? Was kann passieren, wenn die Überweisung beim32 GB Grenzeauf der Ziel-SD-Karte (Probleme mit der Datenintegrität)?
Weitere Hinweise:
Beliebigandere Methodedie SD-Karten zu klonen wäre OK, aber ich habe ein Problem: in diesem Fall handelt es sich um ein SD-Karten-Boot-Laufwerk für eineHimbeer-Pi 2, und das Klonen über
partimage
odergparted
hat nicht funktioniert (der Raspberry bootet nicht). Nurdd
das Klonen scheint ohne Fehler zu funktionieren.ÄhnlichFrage, aber ich denke, nicht dasselbe.
Das
dcfldd
Tool hat die gleiche Syntax und das gleiche Verhalten wiedd
. Es gibt nur mehr Informationen (Fortschritt usw.). Hier ist diemanpage.
Antwort1
Angenommen, sda ist Ihre 64 GB große Quell-SD-Karte und sdb ist Ihre 32 GB große Ziel-SD-Karte. Sie können dd so einschränken, dass nur die Anzahl der erforderlichen Sektoren kopiert wird, und zwar mit:
dd if=/dev/sda of=/dev/sdb bs=512 count=61315072
Antwort2
Ich habe das schon oft mit Festplatten gemacht: Man dd
steckt einfach die große auf die kleine. Bei 32 GB bricht es dann ab, aber das ist ok.
Wenn Sie immer noch Zweifel haben, schlage ich vor, dass Sie es auf dem alten USB-Stick/der alten Festplatte versuchen, die Sie noch herumliegen haben.
Antwort3
Sie können zum Erstellen der Kopie jedes beliebige Werkzeug verwenden, beispielsweise cat
(dd
hat gegenüber keine Vorteile cat
, nur Nachteile). Es wird gestoppt, wenn es das Ende der Zielfestplatte erreicht. Der Nachteil dieses einfachen Ansatzes besteht darin, dass es schwer zu sagen ist, ob die Kopie des Teils, an dem Sie interessiert sind, erfolgreich war.
Um sicherzustellen, dass der Kopierbefehl einen Erfolgsstatus zurückgibt, wenn er erfolgreich das kopiert hat, was Sie kopieren wollten, und andernfalls einen Fehler ausgibt, verwenden Sie einen Befehl, der die richtige Datenmenge kopiert. Um die ersten N Bytes einer Datei zu kopieren, verwenden Sie head -c
. Die Anzahl der zu kopierenden Bytes ist die Anzahl der Sektoren multipliziert mit der Sektorgröße (512 Bytes in Ihrer fdisk
Auflistung). Vergessen Sie nicht, dass Sektoren bei 0 beginnen (Sektor 0 enthält die Partitionstabelle), also ist die Gesamtzahl der zu kopierenden Sektoren der größte „End“-Wert plus eins.
head -c $((61315071*512+512)) /dev/sdSOURCE >/dev/sdDESTINTATION
Ersetzen Sie sdSOURCE
und sdDESTINATION
durch die entsprechenden Gerätenamen. Führen Sie fdisk -l /dev/sdDESTINATION
und grep sdDESTINATION /proc/partitions
und file -s /dev/sdDESTINATION
und alle anderen Befehle aus, die Sie für nützlich erachten, um sicherzustellen, dass das Gerät, das Sie überschreiben, tatsächlich das Gerät ist, das Sie überschreiben wollten.