Recuperare i propri files da un disco danneggiato

Mi è appena capitato di dovermi cimentare in questa impresa per fare un favore ad un amico. Come al solito ci si accorge di non aver fatto i backup dei propri files importanti sempre quando e troppo tardi per recuperarli, o quasi. Nella fattispecie si trattava di una pendrive (piuttosto attempata) che non risultava più leggibile con nessun sistema operativo/computer.

Inserendola in un computer con Windowx XP compariva in esplora risorse il messaggio “L’unità F: non è formattata, formattare?”

Fortunatamente la chiavetta mi è capitata in mano prima che qualcuno rispondesse avventatamente si a tale domanda.

Come recuperare i dati

La procedura che ho usato in questo caso è abbastanza semplice, richiede solamente un paio di programmi per provare il recupero testdisk e photorec. In più per lavorare con un buon margine di sicurezza e lasciarsi aperta la strada per tentare altri approcci di recupero conviene non lavorare direttamente sul dispositivo, ma su una sua immagine salvata su un altro harddisk. A questo scopo ci sono varie soluzioni, ma quella con cui mi sono trovato meglio è dd_rescue.

Se non si ha a disposizione un sistema Linux sul quale installare i programmi citati, può tornare molto comodo un disco di Knoppix, che contiene i tool necessari al recupero nelle loro ultime versioni disponibili. Nella fattispecie ho utilizzato la versione CD dove ho trovato tutto il necessario (tranne il compilatore c++ che servirà più avanti se si vuole installare la versione GNU di ddrescue).

Dopo aver masterizzato il disco con knoppix facciamolo partire in un qualsiasi computer in grado di fare boot da CD. In alternativa si può anche preparare una pendrive con knoppix se il vostro sistema supporta il boot da USB seguendo queste istruzioni.

Una volta che il sistema è caricato apriamo una finestra di terminale e diventiamo root con il comando sudo su. Dopo di ciò inseriamo la pendrive danneggiata nella porta USB. Esaminando l’output del comando dmesg saremo in grado di identificare quale nome è stato assegnato al dispositivo:

[12866.896026] usb 1-2: new full speed USB device using uhci_hcd and address 3
[12867.039523] usb 1-2: configuration #1 chosen from 1 choice
[12867.044738] usb 1-2: New USB device found, idVendor=13fd, idProduct=1618
[12867.044747] usb 1-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[20771.265739] sd 4:0:0:0: [sdc] 234441648 512-byte hardware sectors (120034 MB)
[20771.269228] sd 4:0:0:0: [sdc] Write Protect is off
[20771.269233] sd 4:0:0:0: [sdc] Mode Sense: 00 38 00 00
[20771.269235] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[20771.272999] sd 4:0:0:0: [sdc] 234441648 512-byte hardware sectors (120034 MB)
[20771.274137] sd 4:0:0:0: [sdc] Write Protect is off
[20771.274141] sd 4:0:0:0: [sdc] Mode Sense: 00 38 00 00
[20771.274144] sd 4:0:0:0: [sdc] Assuming drive cache: write through
[20771.274146]  sdc: sdc1
[20771.317017] sd 4:0:0:0: [sdc] Attached SCSI disk

In questo caso la pendrive viene riconosciuta come sdc ma anche qui non risulta possibile montarla in quanto non viene riconosciuto nessun filesystem al suo interno.

Una volta che si conosce il nome del dispositivo da utilizzare la prima cosa da fare è crearne un immagine sul disco fisso, quindi dopo aver montato uno dei dischi del computer “ospite”, proviamo prima con il comando dd_rescue presente in knoppix.

dd_rescue /dev/sdc /savepath/pendrive.image

A differenza del comando dd il software ddrescue evita di inchiodarsi sui settori non leggibili e completerà l’immagine anche in presenza di errori di lettura dal device.

Nel mio caso su 512MB ddrescue ha saltato per impossibilità di lettura circa 8MB, ma ha completato comunque l’immagine.

Ora se siete fortunati potreste anche riuscire a montare l’immagine creata e provare a vedere se risulta leggibile con l’opzione loop di mount in questo modo

mount -t vfat -o loop /savepath/pendrive.image /mnt/pendrive/

Se invece l’immagine non risulta montabile allora è il momento di passare a testdisk/photorec.

Per non lasciare nulla di intentato si può provare come dicevo prima ad utilizzare la versione GNU di ddrescue, c’è chi dice che sia più veloce e abbia risultati migliori. In tal caso serve un compilatore C++ che non è incluso nel CD di Knoppix (mentre dovrebbe essere incluso nel DVD). Per installarlo occorre essere collegati ad internet e digitare i seguenti comandi

aptitude update
aptitude install g++

Una volta installato va verificato che sia disponibile l’eseguibile c++, in caso contrario si può facilmente creare con il comando

ln -s /usr/bin/g++ /usr/bin/c++

A questo punto è sufficiente eseguire pochi comandi per compilare il programma ed ottenere infine l’immagine del device danneggiato

# download ddrescue
wget http://download.savannah.gnu.org/releases/ddrescue/ddrescue-1.8.tar.bz2
# extract the source code
tar xjf ddrescue-1.8.tar.bz2
# compile ddrescue
cd ddrescue-1.8
./configure && make
# first, grab most of the error-free areas in a hurry:
./ddrescue -n /dev/old_disk /dev/new_disk rescued.log
# then try to recover as much of the dicy areas as possible:
./ddrescue -r 1 /dev/old_disk /dev/new_disk rescued.log

Uso di testdisk

Se non siamo riusciti a recuperare niente con ddrescue, allora si può provare con questi due utilissimi tool.

Il primo serve per cercare di riparare partizioni danneggiate, mentre il secondo recupera i dati da dispositivi raw.

Il programma testdisk è un programma interattivo che va avviato passandogli semplicemente il nome del dispositivo (o dell’immagine) sul quale lavorare.

Una volta avviato l’eseguibile il programma si presenta con una schermata nella quale possiamo muoverci tra le varie opzioni con i tasti cursore. L’utilizzo è abbastanza intuitivo, in ogni caso viene spiegato molto in dettaglio sul sito del programma cosa si può fare con esso e come va usato.

Schermata principale di testdisk

Schermata principale di testdisk

Un’altra feature molto interessante di questo strumento è che può essere utilizzato anche per l’undelete dei files cancellati su partizioni NTFS, FAT ed ext2.

Utilizzo di photorec

Chiaramente nel mio caso il recovery della partizione non è andato a buon fine per nessuna delle 2 immagini create con le differenti versioni di ddrescue. A questo punto non rimane che una speranza, photorec. Però si tratta di una speranza ben riposta, perché questo software fa veramente miracoli ed è quanto di più banale ci sia al mondo da utilizzare.

Anche in questo caso per avviare il recupero è sufficiente avviare l’eseguibile seguito dal nome dell’immagine creata in precedenza. Una volta avviato il programma si devono indicare pochi dati per iniziare la ricerca dei files perduti (guida illustrata passo per passo), tra cui indicare la partizione da cui recuperare oppure il device raw da cui leggere, indicare tipo della tabella delle partizioni e tipo di filesystem di cui si tratta(va). Infine va selezionata la directory dove salvare il materiale recuperato, dare l’avvio ed aspettare incrociando le dita, quello che ci si presenterà davanti è questa schermata

Photorec in azione

Photorec in azione

Alla fine del recupero nella directory indicata troverete tutto il materiale recuperato, per cui se siete stati fortunati avrete nuovamente i file dati per persi.

Nel mio caso sono stato in grado di recuperare da una partizione completamente danneggiata (testdisk non è riuscito neanche a riconoscere il tipo di partizione) circa 441 files sui circa 500 presenti. Tra di essi alcuni documenti in formato excel sono risultati illeggibili mentre per quanto riguarda gli altri formati non ci sono stati problemi. Ovviamente mancava il documento più importante di tutti ma d’altronde si sa la legge di Murphy è sempre in agguato, per cui prima di essere costretti ad utilizzare questi programmi la parola d’ordine è sempre backup, backup, backup.

You can leave a response, or trackback from your own site.

One Response to “Recuperare i propri files da un disco danneggiato”

  1. [...] al feed RSS per ricevere tutti gli aggiornamenti del blog. In un precedente post ho spiegato come recuperare dati da un supporto danneggiato utilizzando il programma GNU ddrescue. Sfortunatamente se il recupero non è completo ci possono [...]

Leave a Reply

Subscribe to RSS Feed