Recuperare testo dai blocchi su disco (ext2) inutilizzati (aka Jurassic Mail: Il blocco perduto) Giugno 2004 Cos'è: Una spiegazione su come recuperare del testo dai blocchi inutilizzati di una partizione ext2. Disclaimer: come al solito declino ogni responsabilità per eventuale meltdown del microprocessore, creazione di anomalie spazio-temporali nel vostro case ed eventi assimilabili. :D Se la procedura che segue vi sembra idiota...cosa state ancora qua a fare? Fuori dai piedi! Per chi resta, buon divertimento. Ricordate che sono un novizio del mondo GNU/Linux, dunque perdonatemi eventuali strafalcionerie. Prima di leggere questo documento, vi consiglio di dare un'occhiata a "Linux Ext2fs Undeletion mini-HOWTO" di Aaron Crane (io ho letto la v1.3 del 2 Feb 1999). 1. Leggere i blocchi inutilizzati su una partizione ext2 Mamma mi si sono sovrascritte le e-mail! Se vi si fossero cancellate, beh forse sarebbe stato meglio (se questo è il vostro caso potete dare un'occhiata all'Undeletion mini-HOWTO). Comunque niente paura! Se siete abbastanza pazzi e sprovveduti, potete sempre tentare di recuperare il prezioso testo semplicemente leggendo tutti i blocchi inutilizzati su disco, e cercando alcune parole chiave che ricordate siano presenti nelle mail che volete recuperare. Se vi andrà bene, ed il file non è particolarmente frammentato (e non vi sono state sovrascritture proprio nei blocchi che vi interessano), ritroverete (con un po' di pazienza) le e-mail in blocchi abbastanza contigui. Il comando è: debugfs /dev/hda2 -R dump_unused | less Questo sbatte in output (tramite pipe) al "lettore" less tutti i caratteri dei blocchi rimasti inutilizzati sulla partizione /dev/hda2. Il bello di less è che non deve caricare i file che legge tutti in una volta (come ad esempio, a quanto ne so, l'editor di X KWrite). NOTA: Io sono stato parecchio sprovveduto a non smontare la partizione hda2 (che da me era partizione di root), su cui così facendo si sarebbero potuti sovrascrivere i dati da recuperare. A voi consiglio vivamente di smontare la partizione interessata dal recupero, seguendo le istruzioni che potete trovare nell' "Undeletion mini-HOWTO". Da less, poi, si può cercare per parole chiave (dando /stringa_di_ricerca ) il testo desiderato. Non occorre neppure troppo tempo per cercare, considerando il fatto che solitamente si fa una ricerca su gigabyte di roba (ovviamente il tempo di ricerca è condizionato da fattori quali la quantità di blocchi inutilizzati, la velocità di accesso al disco e via dicendo)! Questo comando mi è stato utile quando ho dovuto recuperare delle e-mail importanti, visto che le e-mail sono in definitiva contenute in lunghi file di testo. Fortunatamente avevo anche un backup della posta fino ad una certa data, dunque il testo che mi serviva recuperare era limitato, giusto per reintegrare il backup con le e-mail più recenti. 2. Recuperare il testo dai blocchi L'output di debugfs riporta anche il numero dei blocchi di cui visualizza l'output così: Unused block 84823 contains non-zero data: dove 84823 è il numero del blocco che visualizza a seguito. In un sistema ext2 (e credo anche ext3), si può recuperare il testo dei blocchi così: dd bs=4K if=/dev/hda2 skip=00000 count=000 of=/win-d/rek/recover.000 | | | | | | | | | file che conterrà il testo recuperato | | | numero di blocchi da estrarre | | blocco di partenza (esso stesso compreso) | dispositivo da cui leggere | | blocchi da 4KBytes (valore di default; il numero di bytes/settore può essere anche diverso) ALTRI COMANDI UTILI: debugfs: stat restituisce le informazioni sull'inode (inserire il numero di inode), tra cui i blocchi da esso puntati. Per ottenere il numero di inode dei file tramite ls si può usare il comando ls -i stat nomefile restituisce le informazioni sull'inode che tiene le informazioni di nomefile. E' anche possibile dare lo stesso comando da debugfs (consultate sempre il manuale!).