Recuperare dati da un hard disk rotto su linux con ddrescue

Il vostro backup non è abbastanza recente ed il vostro disco fisso ha deciso di abbandonarvi? Prima di rassegnarvi c’è qualcosa che potete fare.

Se i dati sono preziosi, il consiglio migliore è quello di rivolgersi ad un centro specializzato. E’ solitamente un intervento costoso (se non lo è significa che non fanno il necessario), e non sempre ne può valere la pena.

In quest’ultimo caso, ci sono dei programmi linux che possono aiutare a recuperare gran parte, se non tutti i dati che avete perso a causa del disco.

La possibilità di successo dipende dal danno fisico che questo ha subito, quindi prima iniziate meglio è.

Prima di tutto scaricate systemRescueCD. E’ un cd che parte all’avvio, con tanti programmi utili per ripristinare un sistema operativo. Tenetene una copia a disposizione, ogni tanto potrebbe servirvi.

Poi avviate il computer con il disco rotto ed un disco con spazio vuoto a disposizione, grande almeno quanto la partizione da ripristinare.

Facciamo l’esempio che il disco rotto sia il primo, su linux sotto /dev/sda

Potete ripristinare tutto il disco o solo la partizione interessata (/dev/sda1 per la prima, /dev/sda2 per la seconda e così via).

Siccome è una operazione che richiede tempo, il mio consiglio è sempre quello di avere più partizioni nel disco, dividendole per importanza (nella prima il sistema operativo, non interessante, e nella seconda immagini, documenti e video, nella terza eventualmente film e serie tv che si possono recuperare altrove).

Dovete montare il disco nuovo, vuoto, in una posizione utile. Se è il secondo disco il comando sarà tipo:
mount /dev/sdb1/ /mnt/backup
Attenzione: il filesystem deve supportare file grandi, quindi deve essere NTFS, ext2 o ext3, ecc.

A questo punto potete utilizzare il comando ddrescue (attenzione, non dd_rescue, che è diverso e meno potente). E’ un comando che prova con insistenza a recuperare i dati del disco, senza interrompersi nel caso di errori. Utilizza inoltre una mappa del disco, che gli permette di girare a pezzi o essere eseguito più volte senza dover ricominciare il lavoro da zero.

Prima di tutto, cercate di recuperare la maggior parte dei dati con un primo passaggio:

1) ddrescue --no-scrape --no-trim --skip-size=50M /dev/sda2 /mnt/backup/immagine.img /mnt/backup/mapfile

Questo comando copierà i dati della partizione /dev/sda2 in una immagine nel disco nuovo, chiamata /mnt/backup/immagine.img, creando una mappa del recupero in /mnt/backup/mapfile.

Le altre opzioni servono per evitare due passaggi molto lenti (--no-scrape --no-trim) e fare un salto di almeno 50MegaByte in caso trovi un errore, per passare ad una zona migliore del disco.

Il comando si può interrompere quando si vuole, con i tasti CTRL+C. Riutilizzando sempre lo stesso mapfile, la seconda esecuzione non ripartirà da zero. Non conviene però interrompere spesso perché i settori saltati verranno ritestati.

A questo punto si può fare un secondo passaggio, lavorando sulla parte critica del disco, che è la prima:

2) ddrescue -i0 -s1G -d -r3 /dev/sda2 /mnt/backup/immagine.img /mnt/backup/mapfile

Questo comando parte dall’inizio della partizione (-i0), lavora sul primo GygaByte (-s1G), ritenta la lettura 3 volte in caso di errori (-r3), e va direttamente sul disco senza usare cache (-d)

La prima parte del disco spesso è la più importante perché contiene la mappa dei file, senza la quale non riuscirete ad utilizzare il resto dei dati recuperati.

Poi si può tentare un terzo passaggio, insistendo su tutto il disco che non è stato recuperato:

3) ddrescue --retrim -d -r3 /dev/sda2 --reverse /mnt/backup/immagine.img /mnt/backup/mapfile

In questo caso andiamo al contrario (–reverse), e facciamo in modo che il software marchi tutti i blocchi falliti come non ritagliati, e riprovando a recuperarli (in un ordine diverso rispetto ai tentativi indicati con -r3).

Se qualcuno dei passaggi è troppo lento, si possono togliere opzioni per farlo insistere meno. Più tempo darete al programma, più dati riuscirete a recuperare, arrivando ad un punto nel quale non ne varrà più la pena.

Ricordate che potete sempre ripetere i passaggi quante volte volete, magari cambiando le opzioni, dopo aver letto il manuale.

L’importante è che indichiate sempre la stessa immagine di destinazione ed il mapfile.

A questo punto avete la vostra immagine del disco recuperata. Potete consultare cosa c’è dentro, magari iniziando in sola lettura:

mount -o ro /mnt/backup/immagine.img /mnt/floppy 

Il nome floppy fa ridere, ma è una cartella come un’altra, sicuramente vuota e già esistente su systemRescueCD.

potete aprire il disco con il comando “mc”.

Potrebbe essere necessario un controllo del filesystem, che dipende dal tipo. Se era NTFS, conviene farlo controllare da CHKDS, dopo aver montato l’immagine in maniera virtuale con imdisk

In caso fosse ext3, invece, dovete prima di tutto smontare l’immagine

umount /mnt/floppy 

e controllare la partizione virtuale con

fsck.ext3 /mnt/backup/immagine.img.backup

(vi consiglio di fare una copia dell’immagine, prima di toccarla in scrittura, per questo ho indicato immagine.img.backup).

Altri programmi che possono tornarvi comodi:

photorec, testdisk

Fatemi sapere nei commenti se questa pagina vi è servita, o se avete altri consigli per gli utenti che dovessero riscontrare lo stesso problema.

Recuperare dati da un hard disk rotto su linux con ddrescue

2 commenti su “Recuperare dati da un hard disk rotto su linux con ddrescue

  1. Dovete montare il disco nuovo, vuoto, in una posizione utile. Se è il secondo disco il comando sarà tipo:
    mount /dev/sdb1/ /mnt/backup

    Che significa? Devo digitarlo come comando sul terminale?

I commenti sono chiusi.

Torna su