Come posso creare un'immagine un po 'identica di una chiavetta USB?


21

Ho una chiavetta USB che è illeggibile per qualche motivo. Voglio crearne un'immagine per scopi di archiviazione in modo da poter provare a recuperare i dati dall'immagine in un secondo momento.

Come potrei fare per creare un'immagine così identica di una chiavetta USB?


Questo è l'errore che visualizzo quando utilizzo 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:~$ 

Quale editor esadecimale usi?
AJMansfield l'

Quando non riesci a leggere dal dispositivo che /dev/sdxpunta alla chiavetta USB, c'è un problema serio e penso che non ci siano strumenti disponibili per gli utenti normali, che funzionerà. Vedi questo link per maggiori dettagli, askubuntu.com/questions/144852/… ; Non mollare subito. Prova in base all'elenco delle cose che potrebbero far funzionare la lettura. Forse puoi separare il pendrive USB e trovare una scheda micro SD, che funziona ancora secondo il commento di @ ubfan1 (alla risposta collegata).
sudodus,

hai 2 opzioni per gestire il tuo problema: 1a semplice: esegui sudo su e poi come root esegui il tuo comando dd 2a versione più qualificata esegui dd con status e '' sudo bash -c 'dd status = progress if = / dev / sd * | gzip> ~ / Backup-USB.img.gz '
WiKrIe

Risposte:


39

dd esso!

L'utilizzo sarebbe qualcosa di simile a sudo dd if=/dev/sdb of=~/USB_imagedove / dev / sdb è l'unità USB come elencato da sudo fdisk -le ~ / USB_image è il file di immagine in cui verrà eseguita la copia (un percorso in cui verrà creato il file di immagine).

Per ripristinare l'immagine su un'altra unità USB basta invertire il processo: sudo dd if=~/USB_image of=/dev/sdbripristinerà ~ / USB_image sul dispositivo sdb . Assicurati solo che la nuova unità USB sia grande o più grande di quella originale.

Puoi anche montare il file di immagine che hai appena creato in un percorso senza doverlo prima ripristinare su un'altra unità USB con mount ~/USB_image /mnt/USB_image -o loop.


Cosa succede se fdisk -lnon riesco a vedere l'unità USB? Tuttavia, posso vederlo dal programma Utility Disco come / dev / sdd, ma quando provo ad usare il tuo comando, sembra fallire.
oshirowanen,

Fallire con quale difetto?
Bruno Pereira,

Aggiunto l'errore alla domanda originale in quanto era troppo per un commento.
oshirowanen,

1
Se fdisk non visualizza il dispositivo, usa dmesg per vedere cosa sta succedendo quando il dispositivo è collegato. Dmesg è un elenco di interazioni del kernel, quindi in sostanza se l'hardware fa qualcosa sul tuo computer, in dmesg c'è un messaggio al riguardo.
j0h

2
@Alex usa status='progress'con dd Ubuntu, o scopri il PID del tuo ddcomando e invialo SIGUSR1segnale. Non sono sicuro di altre implementazioni, però.
Sergiy Kolodyazhnyy il

7

Usa ddrescue. Continuerà dopo gli errori, dove ddsemplicemente fallirà.

Inoltre, ddrescueè nei repository. Il 13.04, ho digitato sudo apt-get install gddrescue per l'installazione.

Utilizzare sudo fdisk -lo dmesgper capire la posizione del dispositivo, ad esempio /dev/sdb:, quindi eseguire un comando come

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

ci sono molte opzioni ddrescuee potresti voler leggere le manpagine. Inoltre non sono sicuro del motivo per cui il tuo hardware non funziona e si scarica dd. Un blocco difettoso potrebbe ddchiudere, ma anche interruzioni di corrente intermittenti. dmesgpotrebbe dirti di più sugli errori hardware che potresti riscontrare.

ASSICURARSI che il dispositivo non sia montato! quando si tenta di eseguire il ripristino dei dati, l'imaging, ecc. Ciò potrebbe causare problemi.

Ci sono molte cose che possono andare storte nel recupero dei dati. Pubblica di nuovo in caso di problemi. testdiskè una bella utility per fare il recupero dei dati una volta che hai un'immagine.

Per chiarezza, si tratta di un disco rigido USB o di un dispositivo USB (memoria a stato solido)?

Gli errori I / O sono in genere indicativi di malfunzionamenti hardware piuttosto che di corruzioni del file system.

Prova anche a ottenere l'analisi dei dati SMART del dispositivo, se disponibile. Questo potrebbe dirti cose come se il dispositivo fosse surriscaldato, acceso da molto tempo, abbia settori danneggiati, esposti a più di X no. di Gs ecc.


Chiavetta USB, non ci sono dati SMART da analizzare ... Penso anche che tu debba usarlo sudoper ddrescue, * dove dd semplicemente fallirà * non è in realtà vero dal momento che puoi configurare ddper ignorare gli errori di lettura. testdiskè fantastico quando puoi leggere i settori di dati persi , non quando l'unità è morta.
Bruno Pereira,

# è il simbolo per root, quindi no, sudo non richiesto. se fosse $, allora sì.
j0h

Voglio anche notare che se ddrescue o addirittura dd falliscono, ma sei in grado di generare un'immagine, potresti comunque provare a fare il recupero dei dati su quell'immagine.
j0h

Suggerirei l'uso di gddrescueagainst ddrescuepoiché gddrescueè più recente e più in grado di fare il lavoro che ddrescuefa.
Bruno Pereira,

1
Non conosco nemmeno amico, leggi il mio post. gddrescue è il pacchetto e ddrescue è il comando.
j0h

2

È possibile creare un'immagine di una chiavetta USB (o di un altro dispositivo) utilizzando dd.

Per esempio

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

È possibile aggiungere più parametri ddper ottimizzare il comando (ad es bs.).


2

dd, come menzionato da un precedente poster, è il modo nativo di andare. Tuttavia, ti consigliamo di continuare su errori, quindi inizieresti con:

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

La parte importante è l'ultima: conv=syncdice a dd di riempire tutti quei blocchi che potrebbe leggere solo parzialmente con zero, quindi l'immagine risultante potrebbe avere qualche zero in più, ma strutturalmente sarà uguale al disco traballante, meno i suoi errori di lettura. conv=noerror si è preso cura di quegli errori di lettura, dicendo a dd di continuare con il blocco successivo. A questo punto, la dimensione del blocco è importante, poiché se è più grande del necessario per saltare l'errore, i dati leggibili andranno persi qui. Il Blocksize dovrebbe sempre essere un fattore due - in caso di dubbio, 512kdovrebbe fare il trucco.

Quindi suggerirei di:

  • conservare una copia non modificata di quell'immagine in un posto sicuro
  • Invia una copia dell'immagine del disco
  • montare l'immagine del disco
  • controlla i tuoi file: ora sono leggibili senza problemi, ma alcuni potrebbero mancare o essere troncati
  • Se il dispositivo stesso non può essere letto, potresti essere sfortunato. Inoltre, se il dispositivo contiene software proprietario, potrebbe essere configurato per restituire errori di lettura quando si accede nei primi blocchi.

(Citando parzialmente me stesso da un articolo scritto nel 2010)

Se non hai bisogno di rimanere nativo, puoi sempre provare strumenti che stanno cercando di facilitare un po 'il processo, come ddrescue (pacchetto gddrescue) e il suo compagno ddrescueview( sourceforge ) per visualizzare gli errori.


2

Per quanto riguarda la seconda parte della tua domanda "Questo è l'errore che ottengo quando uso dd": vedo un paio di possibilità.

  1. Nota la differenza di comando che hai digitato rispetto alla risposta accettata; ti manca un ~davanti /USB_image. In altre parole, stai provando a generare la radice del tuo filesystem invece che nella tua home directory.
  2. /dev/sddpotrebbe non essere l'unità corretta. Eseguire sudo fdisk -le confrontare la dimensione dell'unità con la dimensione nota della chiavetta USB. Per esempio, so che questo è il mio chiavetta USB perché è vicino a 16 GB: Disk /dev/sdf: 15.8 GB, 15805186048 bytes.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.