Documenti importanti, foto delle vacanze, la tesi di laurea, dischi di backup, ... quando abbiamo a che fare con questi elementi utilizziamo sempre la massima attenzione tuttavia può capitare che, per distrazione, per errore di digitazione o per un click sul pixel sbagliato, di cancellare inavvertitamente proprio quel file importantissimo e, se non abbiamo una copia di scorta, ci consideriamo perduti. Ma non sempre è così, anzi molto spesso Testdisk e Photorec, possono recuperare quasi tutti i file!

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Facciamo alcuni esempi pratici, per capire come meglio agire in caso ci trovassimo di fronte a problemi analoghi. Nei miei esempi, utilizzerò una chiavetta USB, formattata in exFAT e il mio sistema operativo preferito (Linux) ma lo stesso può essere fatto su un hard disk interno o esterno, sia esso un vecchio dispositivo a dischi rotanti o un moderno SSD in qualsiasi sua forma, con altri filesystem tra i più comuni (FAT, NTFS, ext4, HFS+, ... ) e naturalmente su Windows o MacOS.

Ho cancellato per errore un file importante!

Sulla mia chiavetta USB di test, insieme a qualche immagine e alle bozze di alcuni miei articoli, ho un file pdf per me molto importante

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

"Per errore" lo cancello tramite terminale, con il comando rm così che non posso nemmeno andare a riprende quel file dal cestino. Come fare adesso? Come è possibile recuperare il file?

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Dato che cancellare un file non lo elimina fisicamente dal disco, ma semplicemente marca i settori del disco dove sono presenti i dati del file cancellato come disponibili per essere riscritti, è (quasi) sempre possibile recuperare il file cancellato o almeno il suo contenuto, andato a cercarlo nello spazio contrassegnato come "vuoto" dal sistema operativo.

In linea generale, quindi, la prima cosa da fare è assicurarsi che nessun altro processo stia scrivendo dati sul disco in questione, per evitare che i settori occupati dal file cancellato siano riscritti. Se il file cancellato è estremamente importante potreste pensare anche di scollegare immediatamente la chiavetta o il disco esterno dal computer: attenzione però perché in questo modo potrebbero corrompersi altri file che potrebbero diventare totalmente illeggibili e irrecuperabili! Valutate bene le vostre priorità!!

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Se si tratta invece del disco fisso di un computer dove risiede il sistema operativo, la cosa si complica decisamente, dato che ci sarà sicuramente qualche processo che continuerà a scrivere dati sul disco. Spegnere il computer potrebbe portare alla scrittura sul disco di un file anche piuttosto grande, relativo allo stato attuale della macchina (è il caso dello spegnimento ibrido delle ultime versioni di Windows). Staccare la spina elettrica invece, oltre a farvi perdere il lavoro che stavate facendo, potrebbe anche in questo caso corrompere alcuni file e, nel caso venissero interessati quelli necessari all'avvio del sistema, potrebbe portare, nel caso peggiore, a dover reinstallare il sistema operativo!

Come sempre, valutate bene le vostre priorità prima di compiere qualsiasi azione ma tenete presente che per aumentare le probabilità di recuperare il file cancellato, dovrete agire il più velocemente possibile. Questo vale soprattutto se avete un moderno SSD e avete abilitato il TRIM! Questa funzione infatti indica al sistema operativo di svuotare, appena possibile, i settori di memoria occupati da un file marcato come "cancellato" e quindi il file viene effettivamente perso irrimediabilmente.

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

» Leggi: SSD: come attivare TRIM o controllare che TRIM sia attivo con Windows 10

A mio avviso, la cosa più saggia da fare è seguire questi passi:

  • disconnettere il computer da internet (eviterà lo scaricamento di aggiornamenti, mail o notizie!);
  • annullare qualsiasi operazione in corso;
  • salvare i file su cui stavamo lavorando solo su un dispositivo esterno;
  • spegnere il computer completamente (nel caso di Windows, evitando lo spegnimento ibrido con il comando impartito come amministratore da Prompt shutdown /s /f /t 0)

Resta il fatto che per essere sicuri di non sovrascrivere il file dovremo accedere al disco dall'"esterno", consigliata una distro LIVE di Linux, ma tenete presente che potreste incorrere in qualche ostacolo da superare come quelli descritti in questo articolo

» Leggi: [Windows] Password dimenticata? Proviamo a cambiarla con Chntpw!

Se per qualche motivo non potete/volete/riuscite ad accedere al disco tramite una distro LIVE, potete utilizzare i programmi che vedremo di seguito anche dallo stesso computer da cui volete recuperare i file cancellati ma prestate attenzione a non scrivere niente sul disco! Scaricate i suddetti programmi con un altro computer e salvateli su una chiavetta USB dalla quale potrete eseguirli senza doverli installare o copiare sul disco fisso. Un'altra accortezza da prendere è utilizzare un altro disco per salvare i file recuperati: non salvate mai i file recuperati sullo stesso disco da cui volete recuperarli!!

Una volta valutata attentamente la vostra situazione e presa la decisione migliore, possiamo procedere al recupero del file. Anche se questo non è un passaggio essenziale è comunque consigliato per evitare di sovrascrivere accidentalmente il file: meglio lavorare con il clone del disco/chiavetta piuttosto che con il dispositivo fisico. Serve però un clone che sia l'esatta copia del disco, bit per bit, come quello creato da dd! Purtroppo è necessario un dispositivo dove salvare il clone che sia un po' più capiente di quello da clonare.

» Leggi: Clonare l'hard disk con dd e gestire il clone creato

Una volta che abbiamo il clone del nostro disco/chiavetta, possiamo passare alla fase di recupero, utilizzando PhotoRec, uno strumento che funziona da linea di comando ma molto semplice dato che ha pochissime opzioni da poter utilizzare

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Il comando photorec -d ~/Scrivania ~/Scrivania/clone_USB.dd indicherà dove copiare i file recuperati e qual'è il disco (in questo caso dal file-clone-del-disco) da esaminare e aprirà una convenientissima modalità interattiva, dove dovremo confermare il disco da analizzare, selezionare la partizione interessata e il tipo di filesystem con cui è formattata la partizione

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Poi dovremo indicare a PhotoRec dove vogliamo ricercare il file cancellato se nell'intera partizione [Whole] o soltanto nello "spazio libero" [Free], funzione scelta per recuperare il file appena cancellato.

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Dopo pochi secondi (ma il tempo può variare in base a diversi fattori tra cui il numero di file da recuperare e alla grandezza del disco da analizzare) il file è recuperato e salvato nella cartella recup_dir.1 nel percorso di destinazione designato

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Possiamo notare che nella il nome del file recuperato non è lo stesso di quello che aveva in origine ma è generato casualmente da PhotoRec, così come saranno persi i metadati associati a quel file ma il contenuto del file importantissimo è comunque recuperato! Se fossero indispensabili anche questi dati collaterali, solo se il filesystem da cui si vogliono recuperare è FAT o NTFS, si può provare l'altro strumento qui suggerito, TestDisk.

Ho formattato per errore il disco/penna USB sbagliato!

Ho più di una chiavetta USB inserita nel computer e ne devo formattare una; sono di fretta ma sono sicuro che quella è proprio la chiavetta giusta...

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

NO!! Troppo tardi mi accorgo che ho formattato la chiavetta sbagliata, quella contenente foto e documenti importanti!! Anche in questo caso, niente panico! Vediamo se, sempre con PhotoRec, riusciamo a recuperare qualcosa. Anche in questo caso, io preferisco lavorare con un clone della chiavetta ma potete evitare questo passaggio e lavorare direttamente sul supporto, sempre prestando attenzione a non scriverci nessun dato!

Lancio PhotoRec specificando il file clone della chiavetta, seleziono il disco ma questa volta invece di selezionare la partizione trovata (che è quella formattata per sbaglio!), seleziono No partition [Whole disk]. Dopo devo indicare a PhotoRec il filesystem originale dove erano salvati i dati (era exFAT) e infine la cartella dove salvare i file recuperati (che, ricordo, non deve essere sullo stesso supporto da dove vogliamo recuperare i file!!!).

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Lascio lavorare PhotoRec per un po' ma subito si possono notare alcuni tipi di file che ha già trovato

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Alla fine il responso è 2387 file recuperati su 2704 file che erano in origine. Ovviamente i file recuperati saranno rinominati con nomi casuali, non saranno più ordinati in cartelle e mancheranno i metadati, ma il contenuto sarà di nuovo accessibile. Potrebbe capitare anche che alcuni file abbiano un estensione diversa: è il caso per esempio di file di testo semplice (txt) che in origine erano rinominati con altra estensione (.dat, .ini, ...). Insomma, ci aspetta sicuramente un bel po' di lavoro per fare ordine tra i file recuperati! Ma quali sono i file andati perduti?

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Anche se PhotoRec può recuperare moltissimi tipi di file, ci riesce solo se l'intestazione (contenente la "firma" del file utilizzata per il riconoscimento) non è frammentata. Nel mio caso mancano, stranamente, tutti i file apk (applicazioni Android) anche se PhotoRec dovrebbe riconoscerli, più altri file con estensione non riconosciuta (come, ad esempio, i file di backup di Whatsapp e di altre applicazioni). Se volete provare a recuperare file non riconosciuti da PhotoRec e avete a disposizione un file campione (dello stesso tipo di quelli "persi"), potete abbastanza facilmente, creare una "firma" che sarà utilizzata per la ricerca.

Il disco risulta illeggibile!!

Ci sono molte cause che possono rendere illeggibile un disco, una può essere la corruzione del master boot record o mbr. Anche se questo standard è superato (sostitutito dal GUID partition table o GPT, che offre numerosi vantaggi tra cui appunto la resistenza alla corruzione) è ancora largamente utilizzato ad esempio per le chiavette USB.

» Leggi: Differenza MBR e GPT: qual è il migliore? Quale scegliere per hard disk e SSD? Meglio MBR o GPT?

Per simulare la corruzione del mbr della mia chiavetta USB, potrei semplicemente riscrivere la tabella delle partizioni, ad esempio, con GParted ma voglio fare qualcosa di più: scriverò dei dati casuali al posto del mbr!

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

» Leggi: Come usare GParted per modificare le partizioni del disco fisso

» Leggi: Guida: come convertire un disco / SSD da MBR a GPT con Gparted (Live CD/USB)

Ecco fatto, adesso la mia chiavetta non risulta più leggibile... e tutti i dati al suo interno?? Avviamo questa volta TestDisk e indichiamo direttamente la chiavetta USB (che nel mio caso è /dev/sda); ovviamente per accedere al dispositivo, il comando dovrà essere impartito con i privilegi di root, tramite sudo:

sudo testdisk /dev/sda

Confermiamo la scelta del disco, indichiamo il tipo di tabella delle partizioni (solitamente quella selezionata è quella giusta) e poi scegliamo Analyse; TestDisk alla prima non troverà nessuna partizione (è normale, ho sovrascritto l'mbr!), scegliamo quindi Quick Search

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Potrebbe apparire un messaggio di avviso con un suggerimento per una operazione da effettuare se TestDisk non trovasse nessuna partizione. Dopo aver preso nota del messaggio, scegliamo Continue e... la nostra "vecchia" partizione sarà subito trovata!

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

Poiché trattasi di filesystem exFAT, TestDisk non potrà riscrivere direttamente la tabella delle partizioni nell'mbr (come in caso di NTFS) ma ci consentirà di accedere a tutti i file contenuti nella chiavetta (premendo il tasto P) per poterli copiare in un'altra posizione, questa volta conservando i nomi e anche alcuni metadati

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

E se il disco fosse danneggiato??

In caso di disco danneggiato, dobbiamo fare anche qui la distinzione fra disco meccanico e disco a stato solido. Mentre nei dischi del secondo tipo, una volta danneggiati, c'è ahimè ben poco da fare, nei dischi del primo tipo, può capitare che si danneggino dei settori e che questi diventino difficili da leggere prima che completamente inaccessibili. Si può quindi tentare di recuperare i dati scritti in questi settori.

Non avendo a disposizione (e non potendo nemmeno simulare) un disco meccanico danneggiato, spero che mi perdonerete se mi limiterò ad esplorare questo scenario solo in teoria: vi prometto che appena mi capiterà l'occasione aggiornerò l'articolo con un caso pratico!

"Oh no! Ho cancellato/formattato file/ disco/ chiavetta USB!!" Niente panico, guida TestDisk PhotoRec

In caso di disco meccanico danneggiato, se si tratta del disco dove è installato il sistema operativo, dobbiamo evitare di avviarlo e accedervi solo dall'esterno, sempre tramite un LIVECD/USB.

Qualunque sia il disco danneggiato è importantissimo evitare di tentare di recuperare i dati con il semplice copia-incolla altrimenti aggraveremo il danno di quei settori difficili da leggere e diminuiremo le possibilità di recuperare i dati.

Anche in questo caso sarà meglio fare tutti i tentativi di recupero su un clone del disco piuttosto che sul disco stesso ma in questa situazione dovremo evitare dd e affidarci ad un suo "parente": ddrescue, una versione di dd appositamente modificata per clonare i dischi danneggiati.

Ipotizziamo il caso che il disco danneggiato sia sempre in /dev/sda e che vogliamo creare un file-clone, il comando sarà:

sudo ddrescue -d -n /dev/sda ~/clone_danneggiato.dd ~/clone_danneggiato.mapfile

In questo caso avremo indicato a ddrescue di leggere direttamente dal disco senza utilizzare la cache del kernel (opzione -d), di saltare le parti più difficili da leggere (-n) e creare un file log o una "mappa" dei settori del disco (.mapfile). Alla fine avremo un clone del disco nelle condizioni peggiori, dato che abbiamo saltato i settori difficili da leggere, ma sappiamo anche esattamente quali e dove sono questi settori grazie al mapfile.

A questo punto dovremo istruire ddrescue per tentare di leggere i settori danneggiati e possiamo farlo con il comando

sudo ddrescue -d -r3 -f /dev/sda ~/clone_danneggiato.dd ~/clone_danneggiato.mapfile

Come vedete abbiamo semplicemente sostituito l'opzione -n (salta i settori difficili da leggere) con l'opzione -r3, ovvero tenta 3 volte di leggere i settori difficili e aggiunto l'opzione -f che indica di sovrascrivere il file di destinazione se già esistente. Possiamo anche aumentare il numero di tentativi, cambiando il numero che segue -r, ma conviene iniziare con un numero basso dato che, noterete, questo comando impiegherà molto più tempo a terminare rispetto al precedente e, ad un certo punto, potrebbe anche fallire o bloccarsi. In questo caso potrete riprovare ad impartire il solito comando sperando che questa volta vada a buon fine ma nel caso si arresti sempre quando legge la stessa posizione, potete specificare a ddrescue di ripartire iniziando più in avanti rispetto alla posizione problematica, aggiungendo l'opzione -i seguita dal numero leggermente più alto della posizione impossibile da leggere. Quanto più alto? Dipende, solitamente si sceglie una distanza di sicurezza di alcune centinaia ma potrebbero essere sufficienti di meno oppure necessari molti di più, non c'è che da provare!

Una volta terminata la procedura di clonazione con ddrescue, è consigliato tentare qualsiasi altra operazione di recupero su una copia del clone!

La successiva operazione consigliata è provare a riparare il filesystem: questo può essere fatto con fsck o un altro strumento dal funzionamento analogo adatto al tipo di filesystem.

A questo punto, se il disco-clone è leggibile, possiamo procedere a "copia-incollare" i file che ci interessano, se invece il disco non è ancora accessibile non ci rimane che provare con TestDisk e PhotoRec in maniera analoga a quanto visto negli esempi precedenti.