Wie erstelle ich ein identisches Image eines USB-Sticks?

21

Ich habe einen USB-Stick, der aus irgendeinem Grund nicht lesbar ist. Ich möchte ein Image davon zu Speicherzwecken erstellen, damit ich später versuchen kann, die Daten aus dem Image abzurufen.

Wie würde ich vorgehen, um ein so ein bisschen identisches Image eines USB-Sticks zu erstellen?


Dies ist der Fehler, den ich erhalte, wenn ich Folgendes verwende dd:

oshirowanen@desktop:~$ sudo dd if=/dev/sdd of=/USB_image
[sudo] password for oshirowanen: 
dd: reading `/dev/sdd': Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.00783 s, 0.0 kB/s
oshirowanen@desktop:~$ 
oshirowanen
quelle
Welchen Hex-Editor benutzt du?
AJMansfield
Wenn Sie nicht von dem Gerät lesen können, /dev/sdxdas auf den USB-Stick zeigt, liegt ein ernstes Problem vor, und ich denke, dass normale Benutzer keine Tools zur Verfügung haben, die funktionieren. Weitere Informationen finden Sie unter folgendem Link: askubuntu.com/questions/144852/… ; Gib nicht sofort auf. Versuchen Sie es anhand der Liste der Dinge, die zum Lesen führen könnten. Vielleicht kannst du das USB-Stick auseinander ziehen und eine Micro-SD-Karte finden, die nach dem Kommentar von @ubfan1 (bei der verlinkten Antwort) noch funktioniert.
Sudodus
Sie haben 2 Möglichkeiten, um Ihr Problem zu lösen: 1. Einfach: Führen Sie sudo su aus und dann als Root Ihren Befehl dd. 2. Erfahrenere Version Führen Sie dd mit status und sudo bash -c aus. dd status = progress if = / dev / sd * | gzip> ~ / Backup-USB.img.gz '
WiKrIe

Antworten:

39

dd es!

Die Verwendung ist in etwa, sudo dd if=/dev/sdb of=~/USB_imagewo / dev / sdb Ihr USB-Laufwerk ist, sudo fdisk -lund ~ / USB_image ist die Image-Datei, in der die Kopie erstellt wird (ein Pfad, in dem die Image-Datei erstellt wird).

Um das Image auf einem anderen USB-Laufwerk sudo dd if=~/USB_image of=/dev/sdbwiederherzustellen, kehren Sie einfach den Vorgang um: ~ / USB_image wird auf der Geräte- SDB wiederhergestellt . Stellen Sie einfach sicher, dass das neue USB-Laufwerk genauso groß oder größer als das ursprüngliche ist.

Sie können die soeben erstellte Image-Datei auch in einen Pfad einhängen, ohne sie zuvor auf einem anderen USB-Laufwerk mit wiederherstellen zu müssen mount ~/USB_image /mnt/USB_image -o loop.

Bruno Pereira
quelle
Was ist, wenn fdisk -ldas USB-Laufwerk nicht sichtbar ist? Ich kann es jedoch im Festplatten-Dienstprogramm als / dev / sdd anzeigen, aber wenn ich versuche, Ihren Befehl zu verwenden, scheint es zu scheitern.
oshirowanen
Mit welchem ​​Fehler scheitern?
Bruno Pereira
Der Fehler wurde zur ursprünglichen Frage hinzugefügt, da er für einen Kommentar zu viel war.
oshirowanen
1
Wenn fdisk das Gerät nicht anzeigt, können Sie mit dmesg anzeigen, was passiert, wenn das Gerät angeschlossen ist. Dmesg ist eine Liste der Kernelinteraktionen. Wenn also Hardware auf Ihrem Computer etwas tut, wird in dmesg eine Meldung darüber angezeigt.
13.
2
Verwenden Sie @Alex status='progress'mit dd Ubuntu oder ermitteln Sie die PID Ihres ddBefehls und senden Sie das SIGUSR1Signal. Ich bin mir jedoch anderer Implementierungen nicht sicher.
Sergiy Kolodyazhnyy
7

Verwenden Sie ddrescue. Es wird nach Fehlern fortgesetzt, wo ddes einfach fehlschlägt.

Darüber hinaus ddrescueist in den Repos. Am 13.04 habe ich getippt um sudo apt-get install gddrescue zu installieren.

Verwenden Sie sudo fdisk -loder dmesg, um den Gerätestandort zu ermitteln, z. B .: /dev/sdb, und führen Sie dann einen Befehl wie z

ddrescue /dev/sdb /home/user/desktop/bkp.img

Es gibt viele Möglichkeiten ddrescue, und vielleicht möchten Sie die manSeiten lesen . Ich bin mir auch nicht sicher, warum Ihre Hardware ausfällt und ausfällt dd. Ein fehlerhafter Block kann zum ddBeenden führen, aber auch zu zeitweiligen Stromausfällen. dmesgMöglicherweise erfahren Sie mehr über Hardwarefehler.

Stellen Sie sicher, dass das Gerät nicht montiert ist! Wenn Sie versuchen, Daten wiederherzustellen, ein Image zu erstellen usw. Dies kann zu Problemen führen.

Es gibt eine Menge Dinge, die bei der Datenwiederherstellung schief gehen können. Poste zurück, wenn du Probleme hast. testdiskist ein nützliches Dienstprogramm für die Datenwiederherstellung, sobald Sie ein Image haben.

Ist dies aus Gründen der Übersichtlichkeit eine USB-Festplatte oder ein USB-Gerät (Solid State Memory)?

E / A-Fehler weisen in der Regel eher auf Hardwarefehler als auf Dateisystembeschädigungen hin.

Versuchen Sie auch, die SMART-Datenanalyse des Geräts anzufordern, falls verfügbar. Dies kann Ihnen sagen, ob das Gerät überhitzt, lange eingeschaltet war, schlechte Sektoren aufweist und mehr als X-Nr. von Gs etc.

j0h
quelle
USB - Stick, gibt es keine SMART - Daten zu analysieren ... Ich denke auch , dass Sie verwenden müssen , sudofür ddrescue, * wo dd wird einfach nicht * ist eine Art nicht wirklich wahr , da Sie konfigurieren können ddLesefehler ignorieren. testdiskEs ist fantastisch, wenn Sie die Sektoren verlorener Daten lesen können, nicht, wenn das Laufwerk nicht mehr funktioniert.
Bruno Pereira
# ist das Symbol für root, also nein, sudo nicht erforderlich. Wenn es $ wäre, dann ja.
13.
Ich möchte auch darauf hinweisen, dass Sie, wenn ddrescue oder sogar dd fail in der Lage ist, ein Image zu generieren, möglicherweise dennoch versuchen, die Daten auf diesem Image wiederherzustellen.
13.
Ich würde die Verwendung von gddrescueagainst empfehlen, ddrescueda gddrescuees neuer ist und die Arbeit, die dies ddrescueleistet, besser ausführen kann.
Bruno Pereira
1
Ich kenne nicht mal einen Mann, lies meinen Beitrag. gddrescue ist das Paket und ddrescue ist der Befehl.
13.
2

Mit können Sie ein Image eines USB-Sticks (oder eines anderen Geräts) erstellen dd.

Z.B

dd if=<usb device> of=usb.img

Sie können weitere Parameter hinzufügen dd, um den Befehl zu optimieren (z bs. B. ).

Uwe Plonus
quelle
2

ddWie in einem vorherigen Poster erwähnt, ist dies der gebürtige Weg. Sie möchten jedoch, dass es bei Fehlern fortgesetzt wird. Beginnen Sie also mit:

dd if=<usb device> of=<new file on disk with enough space> bs=<should match your blocksize> conv=noerror,sync 

Der wichtige Teil ist der letzte: conv=syncWeist dd an, alle Blöcke, die es nur teilweise lesen konnte, mit Nullen zu füllen, sodass das resultierende Bild möglicherweise einige Nullen zu viele enthält, aber strukturell der Flak-Disk abzüglich der Lesefehler entspricht. conv=noerror kümmerte sich um diese Lesefehler und forderte dd auf, mit dem nächsten Block fortzufahren. An dieser Stelle ist die Blockgröße von Bedeutung. Wenn der Fehler nämlich größer als erforderlich ist, gehen hier lesbare Daten verloren. Die Blockgröße sollte immer ein Faktor von zwei sein - im Zweifelsfall 512ksollte dies der Fall sein .

Dann würde ich vorschlagen:

  • Bewahren Sie eine unveränderte Kopie dieses Bildes an einem sicheren Ort auf
  • fsck eine Kopie des Disk-Image
  • Hängen Sie das Disk-Image ein
  • Überprüfen Sie Ihre Dateien - sie können jetzt problemlos gelesen werden, aber einige fehlen möglicherweise oder sind abgeschnitten
  • Wenn das Gerät selbst überhaupt nicht gelesen werden kann, haben Sie möglicherweise Pech. Wenn das Gerät proprietäre Software enthält, ist es möglicherweise so konfiguriert, dass Lesefehler zurückgegeben werden, wenn in den ersten Blöcken auf das Gerät zugegriffen wird.

(Ich zitiere mich teilweise aus einem Artikel aus dem Jahr 2010)

Wenn Sie nicht systemeigen bleiben müssen, können Sie immer Tools ausprobieren, die den Prozess etwas vereinfachen, z. B. ddrescue (Paket gddrescue) und sein Begleiter ddrescueview( SourceForge ), um die Fehler zu visualisieren.

Tatjana Heuser
quelle
2

In Bezug auf die zweite Hälfte Ihrer Frage "Dies ist der Fehler, den ich bei der Verwendung von dd erhalte": Ich sehe ein paar Möglichkeiten.

  1. Beachten Sie den Unterschied zwischen dem eingegebenen Befehl und der akzeptierten Antwort. Sie vermissen eine ~vor /USB_image. Mit anderen Worten, Sie versuchen, das Stammverzeichnis Ihres Dateisystems anstatt in Ihrem Home-Verzeichnis auszugeben.
  2. /dev/sddist möglicherweise nicht das richtige Laufwerk. Führen Sie sudo fdisk -ldas Programm aus und vergleichen Sie die Größe des Laufwerks mit der bekannten Größe des USB-Sticks. Zum Beispiel weiß ich , das ist mein USB - Stick ist , weil es in der Nähe zu 16 GB ist: Disk /dev/sdf: 15.8 GB, 15805186048 bytes.
MDMower
quelle