Guida verificata con Ubuntu: 20.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Questa guida illustra i programmi dedicati alla creazione di file immagini da un disco rigido, o altro supporto d'archiviazione danneggiato e come estrarre i dati da esso.
Tutti i comandi mostrati in questa guida devono essere eseguiti nel terminale.
Creazione copia disco rigido di lavoro
Individuare e annotare l'identificativo, le partizioni e i file system del disco rigido da recuperare, nonché l'identificativo del disco rigido usato per il salvataggio.
Tramite dd
dd è un programma volto a copiare, convertire e formattare file, da usare tramite linea di comando. Il programma è preinstallato tramite il pacchetto coreutils.
Per eseguire la copia del disco digitare il comando:
sudo dd if=/dev/sdx of=/dev/sdy bs=1M
sostituendo /dev/sdx con l'identificativo del disco da copiare e /dev/sdy con l'identificativo del disco su cui copiare.
Per approfondire l'argomento consultare la pagina man.
Tramite ddrescue
GNU ddrescue è un programma volto a copiare, convertire e formattare file, con in più la funzione per provare di recuperare diversi tipi di errori.
Se non presente, installare il pacchetto gddrescue.
Copiare da disco a disco creando il file log contenente una lista sesquipedale degli errori trovati, digitando il comando:
ddrescue -n /dev/sdx /dev/sdy listaerrori.log
Copiare da disco a disco creando il file log contenente gli errori corretti, digitando il comando:
ddrescue -r 3 /dev/sdx /dev/sdy cosariparato.log
Copiare da disco a disco creando il file log contenente gli errori corretti, limitando la lettura all'interno dei file già listati nel file log precedentemente creato, digitando il comando:
ddrescue -r 3 -C /dev/sdx /dev/sdy cosariparato.log
Sostituire /dev/sdx con l'identificativo del disco da copiare e /dev/sdy con l'identificativo del disco su cui copiare.
Per una breve panoramica delle sue funzionalità e per approfondimenti, si invita alla lettura del seguente documento, nonché della relativa pagina man.
Entrambi i programmi per essere eseguiti richiedono una quantità di tempo più o meno cospicua, in funzione e dipendenza della dimensione del disco da recuperare e delle prestazioni del proprio computer.
Prima di proseguire, si noti che i filesystem di tipo Fat dispongono di un limite di 4GiB per la dimensione massima dei file. Tipicamente le unità USB utilizzano questo tipo di filesystem. Se si è a conoscenza che l'immagine finale sarà superiore a tale dimensione è necessario utilizzare dei filesystem che supportino capacità superiori per il singolo file (ad esempio, Ext4 o altri).
Si consiglia la seguente procedura:
Creare un immagine copiando all'interno di essa quanti più dati possibili, senza alcun tentativo di lettura nel caso si incontrino degli errori (opzione -n):
sudo ddrescue -n /dev/sda /media/usbdrive/nome_immagine /media/usbdrive/logfile
Riprovare tentando tre volte in presenza di errori di lettura:
sudo ddrescue -d -r 3 /dev/sda /media/usbdrive/nome_immagine /media/usbdrive/logfile
Se il comando precedente fallisce riprovare leggendo i settori integralmente:
sudo ddrescue -d -M -r 3 /dev/sda /media/usbdrive/nome_immagine /media/usbdrive/logfile
Estrarre i dati da un immagine
Dopo avere creato l'immagine del dispositivo è necessario passare al recupero dei dati presenti nell'immagine medesima. Qualora il filesystem non sia recuperabile, è possibile comunque tentare di recuperare i singoli file.
Individuare le partizioni nell'immagine
Se è stato recuperato l'intero disco, occorre prima individuare le singole partizioni nel file immagine.
A tale scopo viene utile il programma mmls, installabile tramite il pacchetto sleuthkit, che è in grado di mostrare le partizioni che si trovano all'interno del file immagine.
Per listare le partizioni contenute nel file immagine, digitare il comando:
mmls nome_immagine -B
Per approfondire l'uso del programma consultare la pagina man.
Per ulteriori informazioni sulla suite The SleuthtKit consultare questa pagina.
Montare le partizioni nell'immagine
Per montare le singole partizioni individuate nel file immagine, occorre usare il comando mount congiuntamente alle opzioni loop e offset del comando losetup.
Un esempio di partizioni contenute in un file immagine potrebbe essere la schermata seguente:
DOS Partition Table Offset Sector: 0 Units are in 512-byte sectors Slot Start End Length Size Description 00: ----- 0000000000 0000000000 0000000001 0512B Primary Table (#0) 01: ----- 0000000001 0000000031 0000000031 0015K Unallocated 02: 00:01 0000000032 0001646591 0001646560 0803M DOS FAT16 (0x06) 03: 00:00 0001646592 0002013183 0000366592 0179M DOS FAT16 (0x06)
Nell'esempio, volendo montare la partizione DOS a partire dal blocco numero 32 bisognerà calcolare il numero di byte moltiplicandoli per 512 (la dimensione del blocco mostrata nell'output è di 512 byte). In questo caso 32 * 512 = 16384 sarà il byte di inizio della partizione.
Montare l'immagine individuata digitando il comando:
sudo mount -o loop,offset=16384 nome_immagine /mnt
Per montare un'potetica partizione NTFS usare il comando:
sudo mount -t ntfs -o r,force,loop,offset=32256 file /mnt
dove 32256 deriva da: blocco 63 * 512 byte.
Per approfondire l'argomento consultare le rispettive pagine man.