Hai mai cancellato dei file importanti per errore? Chi non lo fa! Ok, ma posso recuperarli? In questo post, imparerai come recuperare file cancellati su Linux usando vari programmi su diversi file system.
Vedrai come recuperare file cancellati da schede SD, HDD, e partizioni cancellate su diversi file system Linux come EXT3, EXT4, e anche da file system Windows come FAT32 & NTFS.
Tabella dei contenuti
Recuperare i file da partizioni cancellate
Questo è un bel problema. Spesso, gli utenti Linux installano spesso diversi sistemi allo stesso tempo, e possono cancellare una partizione per errore durante il processo di installazione.
Come recuperare i file da quelle partizioni cancellate? Per questo, abbiamo bisogno di recuperare la partizione utilizzando uno strumento chiamato TestDisk.
Testdisk è una potente utilità di analisi delle partizioni e di recupero dati. La maggior parte delle distribuzioni Linux come Debian e Ubuntu è dotata di TestDisk.
D’altra parte, l’applicazione è multipiattaforma e supporta un gran numero di tabelle di partizione come Intel, MSDOS e Mac. Queste sono le tabelle di partizione più popolari.
Inoltre, supporta molti file system come NTFS, EXT4, e altri file system non popolari come BeOS e ReiserFS.
Quando si elimina un file, la lista dei cluster occupati dal file viene cancellata, segnando quei settori disponibili per l’uso. Se i cluster non sono stati sovrascritti, TestDisk può recuperare i file.
Prima di tutto, avviate l’applicazione in questo modo:
$ testdisk
In seguito, avete la possibilità di creare un nuovo file per i log. Se volete crearne uno, scegliete l’opzione create e premete Invio. Se non volete un file di log, selezionate l’opzione No Log.
In seguito, verranno scansionati i dischi o le partizioni riconosciute dal sistema. In questo caso particolare, sda è la partizione che vogliamo recuperare.
TestDisk riconosce vari tipi di tabelle di partizione. Di solito è Intel, a meno che non ne stiate usando una specializzata.
Nella prossima schermata, vedrete una serie di opzioni che il programma ha. Per questo caso particolare, dobbiamo scegliere l’opzione Analyse.
Con questa opzione, il programma analizzerà esaustivamente il disco per trovare la struttura.
In seguito, vi chiederà il tipo di ricerca che volete fare. Di solito, scegli l’opzione Ricerca rapida.
Se sei fortunato, vedrai la partizione cancellata. In caso contrario, dovrai scegliere una ricerca più approfondita.
Poi, scegli l’opzione Scrivi per scrivere la tabella delle partizioni. Al termine, riavviate il sistema e riavrete la vostra partizione!
Nota che durante questi passaggi potrebbe essere necessario molto tempo. Dipende dalla dimensione del disco.
Secondo il tipo di file system che questa partizione può avere, verranno seguite istruzioni particolari. Saranno dettagliate più avanti.
Recuperare i file cancellati da un’unità esterna
Ora immaginiamo di avere un’unità flash esterna, e per errore, avete cancellato alcuni file da essa. Come ripristinarli?
Grazie a TestDisk, il processo diventa abbastanza simile a quello di una partizione cancellata. Ma ci sono alcune differenze.
Per avviare il programma, useremo il comando testdisk. Inoltre, possiamo aggiungere l’unità flash come parametro in questo modo:
$ sudo testdisk /dev/sdb
In seguito, selezionate proceed. Poi, scegliete il tipo di tabella delle partizioni.
Poi, selezionate le opzioni avanzate per recuperare i file.
Il prossimo passo è selezionare la partizione e l’opzione Undelete.
Allora, vedrai tutti i file cancellati sulla partizione.
Ora, seleziona la cartella di destinazione dove mettere i file recuperati. È necessario premere C sulla prima opzione per posizionare i file nella directory corrente.
Finalmente, vedrai questo messaggio:
Congratulazioni! File ripristinati.
Recupera i file cancellati dalla scheda SD
Di solito, su una scheda SD, è comune notare che sono utilizzati per i file multimediali. Pertanto, è consigliabile utilizzare un programma più specializzato per questi file.
In questo caso, useremo l’applicazione chiamata Photorec che è incorporata in TestDisk.
Prima di tutto, inserite la scheda SD sul PC. Poi, eseguite photorec come root:
$ sudo photorec
Allora, vedrete la seguente immagine. Selezionare il supporto e procedere e premere Invio.
In seguito, selezionare la partizione. E selezionare Opzioni e premere Invio.
Lì vedrete le opzioni di ripristino:
Premere q per tornare alla schermata precedente. È necessario scegliere i tipi di file che vogliamo recuperare. Questo si ottiene selezionando l’opzione File Opt.
Premere il tasto s per selezionare e deselezionare tutti i formati. Potete anche selezionare i tipi di file che volete recuperare usando il tasto destro. Per salvare le opzioni selezionate, premere il tasto b. Torna al menu principale usando il tasto q.
Poi, nel menu principale, scegli l’opzione Cerca per iniziare il processo. E scegliete il file system.
Vi verranno presentate due opzioni. Free e Whole. Normalmente, Free è sufficiente. Se volete fare un’analisi profonda, scegliete Whole, ma tenete presente che rallenterà il processo.
Ora, è necessario scegliere la posizione in cui i file saranno salvati. Per farlo, premete il tasto c.
Dopo aver scelto la destinazione, il processo di recupero inizierà. Ricordate che il sistema collasserà e si bloccherà. Quindi sii paziente.
Alla fine, vedrai un messaggio che ti informa di tutto ciò che è successo.
Prossimo, controlla i risultati.
Recuperare file cancellati da NTFS
NTFS è un file system di Windows. Se sei uno di quelli che usano entrambi i sistemi sul computer, allora potresti aver bisogno di ripristinare i file cancellati da una partizione di Windows con questo file system.
Per fare questo, abbiamo uno strumento chiamato ntfsundelete che è abbastanza semplice da usare.
Prima di tutto, è necessario scansionare il disco o la partizione. Per esempio:
$ sudo ntfsundelete /dev/sda1
Poi, saremo in grado di recuperare il file cancellato con il seguente comando:
$ sudo ntfsundelete -u -m
I file recuperati ora appartengono all’utente root. L’ultimo passo è cambiare i permessi e i proprietari dei file usando il comando chown.
Recuperare file da FAT32
Un altro comune file system di Windows è FAT32. È possibile recuperare i file da FAT32 usando TestDisk.
Perciò esegui nuovamente testdisk come utente root e passa il disco come parametro:
$ sudo testdisk
Poi continua i passi come descritto sopra per recuperare i file.
Recuperare i file in memoria (usando inode)
Se si elimina un file che è usato da un altro processo, è possibile ripristinarlo dalla memoria usando inode.
Sono necessarie alcune condizioni iniziali. Per prima cosa, il file cancellato DEVE rimanere aperto da un altro processo. Poi dovete verificare il processo e infine recuperarlo e cambiargli i permessi.
In questo caso, creerò un file chiamato esempio.txt usando l’editor nano e aggiungerò del testo:
$ nano example.txt
Quindi salvate le modifiche e aprite un’altra finestra di terminale e usate il file. Per esempio, con il comando less.
$ less example.txt
Aprite un’altra sessione di terminale, cancellate il file e assicuratevi che sia cancellato:
$ rm example.txt$ ls example.txt
Come potete vedere, il file non esiste più. Ma saremo in grado di recuperarlo. Per farlo, otteniamo il numero del processo associato all’inode del file.
$ lsof | grep example.txt
Si noterà il processo e il comando che sta utilizzando il file (il comando less). Da quell’immagine, dobbiamo prestare attenzione al secondo e al quarto valore. Questi sono rispettivamente il PID del processo e il descrittore del file.
Poi, recuperatelo con il seguente comando:
$ ls -l /proc/2325/fd/4
Poi copiatelo nella posizione che volete, ed è sufficiente per recuperarlo.
$ sudo cp /proc/2325/fd/4 .
Successivamente, controllate i risultati e aprite il file:
In questo modo, possiamo recuperare un file cancellato ancora in memoria e utilizzato da un processo con l’inode.
Recuperare file cancellati da EXT4 (usando extundelete)
EXT4 è il file system predefinito sulla maggior parte delle distribuzioni Linux. È abbastanza veloce e con caratteristiche tecniche che sono molto ben sfruttate dal kernel Linux.
Uno degli strumenti utilizzati per recuperare file dal filesystem EXT4 è extundelete.
Extundelete è un’applicazione open-source che permette di recuperare file cancellati da una partizione o un disco con il file system EXT3 o EXT4. È semplice da usare e viene installato di default sulla maggior parte delle distribuzioni Linux.
Per recuperare un certo file, basta usare il seguente comando:
$ sudo extundelete -restore-file
Per esempio:
$ sudo extundelete /dev/sdb1 -restore-file home/angelo/other.txt
Se volete recuperare tutti i file di una cartella, usate il carattere jolly:
$ extundelete /dev/sda6 -restore-file home/angelo/*
Ma se si desidera ripristinare tutti i file nella partizione o nel disco, il prossimo comando sarà sufficiente:
$ extundelete /dev/sda6 -restore-all
Così, i file recuperati saranno nella directory RECOVERED_FILES. In questo modo, è possibile recuperare i file cancellati usando extundelete.
Usando debugfs
È anche possibile usare lo strumento debugfs per recuperare i file cancellati. Anche questo strumento usa il numero di inode del file cancellato. Tuttavia, funziona solo su file system EXT4.
Anche il suo funzionamento è abbastanza semplice. Per prima cosa, bisogna inserire la partizione o il dispositivo.
$ debugfs
Per esempio,
$ sudo debugfs /dev/sdb1
Poi, dopo un po’, sarà possibile accedere alla console di debugfs per cercare i file eliminati di recente.
$ debugfs: lsdel
Nella prima colonna, si vedrà il numero di inode dei file cancellati in quel dispositivo. Quindi, ripristinatelo con il seguente comando:
$ debugfs mi <inode_number>
E questo è quanto. È abbastanza facile.
Usare ext4magic
Un altro modo alternativo per recuperare i file cancellati su un disco con un file system Ext4 è usare Ext4magic. Anche questa applicazione è abbastanza semplice da usare.
La sintassi di base dell’applicazione è la seguente:
$ sudo ext4magic -f -r -d
Se volessi recuperare i file cancellati da una cartella chiamata files, il comando sarebbe simile a questo:
$ sudo ext4magic /dev/sdb1 -r -d files
Questo è quanto è facile usare ext4magic. Tutto questo grazie al fatto che Ext4 è una comunità e un file system open source.
Recuperare file sovrascritti (usando Scalpel)
Scapel è un altro strumento open-source che permette di recuperare file da dischi formattati, file sovrascritti e anche dischi danneggiati. È ben noto per la sua velocità ed efficienza. In questo senso, emerge come un’alternativa da considerare.
Scalpel scolpisce i file senza l’aiuto del filesystem. Cerca di estrarre intestazioni e piè di pagina dei file e cerca di indovinare l’intera struttura dei file utilizzando alcuni algoritmi ben progettati.
Come TestDisk, è disponibile nei repository ufficiali della maggior parte delle distribuzioni Linux. Pertanto, la sua installazione si riduce all’uso del terminale e del gestore di pacchetti della distribuzione.
Il modo più semplice e veloce per usare Scapel è il seguente:
$ scalpel -o
L’output_folder specifica dove Scapel metterà tutti i file recuperati. Si noti che Scalpel creerà da solo la cartella di output.
Ma come fa Scapel a sapere quali file recuperare? Bene, questo è definito nel file di configurazione dell’applicazione.
Questo file di configurazione si trova di solito nella seguente posizione:
/etc/scalpel/scalpel.conf
E puoi aprirlo con il tuo editor di testo preferito, e lì dovrai solo decommentare le linee per definire i formati dei file da cercare.
I formati di file che scomponi, Scalpel li cercherà.
In seguito, esegui il comando Scalpel completo, e nella cartella di output, vedrai i file recuperati.
$ sudo scalpel /dev/sdb1 -o recovered_files1
A volte, Scalpel ripristina parti del file. Questo dipende dalla salute del disco e da quanti dati sono stati corrotti.
Inoltre, ci sono molti algoritmi di craving che si possono usare, ma abbiamo discusso qui il modo di base di craving dei dati.
Recuperare i file da un sistema non avviabile
Questo è un caso delicato perché abbiamo bisogno di accedere da un Live cd di Ubuntu o un’altra distribuzione Linux simile. Una volta avviato, potremmo usare TestDisk per cercare di recuperare i dati.
In questo caso, dovremmo usare un’unità esterna dove salvare i dati. D’altra parte, nel caso in cui TestDisk non possa fare il lavoro, possiamo anche provare extundelete o ext4magic, purché la partizione sia Ext4.
Se non funziona, si può provare a rigenerare la partizione utilizzando TestDisk come spiegato sopra.
Conclusione
È possibile cancellare file accidentalmente. L’idea è quella di conoscere gli strumenti e le tecniche appropriate per recuperare questi file.
In questo post, abbiamo coperto diverse circostanze e diversi file system che potrebbero aiutare ad evitare tali problemi.
Continua a tornare.
Grazie.
Fondatore di LikeGeeks. Lavoro come amministratore di sistema Linux dal 2010. Sono responsabile della manutenzione, della sicurezza e della risoluzione dei problemi dei server Linux per diversi clienti in tutto il mondo. Amo scrivere script di shell e Python per automatizzare il mio lavoro.