Come recuperare file cancellati su Linux con testdisk

Pubblicato: 2022-01-29
Un'illustrazione di una finestra di terminale su un computer Linux.
Fatmawati Achmad Zaenuri/Shutterstock

Hai mai cancellato un file e te ne sei subito pentito? Ne hai bisogno indietro, e velocemente! Ma cosa succede se il file è così nuovo, non è stato ancora eseguito il backup? Fortunatamente, c'è qualcosa che puoi fare al riguardo.

rm: Abbreviazione di rimorso?

È fin troppo facile usare il comando rm e ritrovarsi a fissare una finestra di terminale con un profondo senso di rimpianto. Un piccolo errore con i caratteri jolly e puoi cancellare molto più di quanto avresti voluto.

Il file system Linux predefinito, ext4 , utilizza inode per contenere i dati su ciascun file e una tabella di inode per tenere traccia degli inode. L'inode contiene metadati sul file, come il suo nome, chi lo possiede, quali sono le autorizzazioni e così via.

Contiene anche punti di ingresso a collegamenti reali che puntano al file. Ogni file ha almeno un collegamento fisico. Ogni volta che crei un nuovo collegamento reale, il conteggio del collegamento reale aumenta di uno. Ogni volta che si rimuove un collegamento reale, il conteggio del collegamento reale nell'inode viene ridotto di uno.

Quando elimini un file che l'inode ha contrassegnato come non utilizzato (e pronto per il riutilizzo), l'ultimo hard link viene rimosso. Quando ciò accade, il file non verrà visualizzato negli elenchi di directory e non sarà possibile utilizzarlo o accedervi.

Annuncio pubblicitario

Tuttavia, i dati che compongono il contenuto del file sono ancora presenti sul disco rigido. Se potessi correggere l'inode in modo che contenga le informazioni corrette, tuttavia, il file verrebbe ripristinato. Naturalmente, questo funzionerebbe solo se i dati che compongono il file sul disco rigido rimangono intatti e non vengono sovrascritti.

In alternativa, puoi creare un nuovo inode, copiare i dati sopravvissuti dal vecchio inode e quindi sostituire i bit mancanti.

Sono attività non banali. Di solito, quando elimini un file per errore, è nel momento peggiore possibile. È sempre quando hai bisogno di quel file e ne hai bisogno ora. Non hai tempo per sporcarti e sporcarti con editor di settore e altre utilità. Inoltre, se è un file che hai appena creato, probabilmente non è stato ancora eseguito il backup, quindi nemmeno quelli ti aiuteranno.

È qui che entra in testdisk . È facile da usare e non richiede una conoscenza dettagliata e di basso livello del filesystem. Diamo un'occhiata a come usarlo!

CORRELATO: Tutto ciò che avresti sempre voluto sapere sugli inode su Linux

Installazione del disco di prova

Per installare testdisk su Ubuntu, usa questo comando:

 sudo apt-get install testdisk 

Su Fedora, devi digitare:

 sudo dnf installa testdisk 

Su Manjaro, devi usare pacman :

 sudo pacman - Sy testdisk 

Utilizzo del disco di prova

Sebbene venga eseguito in una finestra di terminale, testdisk ha un'interfaccia rudimentale. Utilizzare i tasti freccia per navigare e Invio per effettuare una selezione. Per mantenere le cose in ordine, è meglio creare una directory per i file ripristinati.

Digitiamo quanto segue per creare una directory chiamata "restored" per i nostri file ripristinati:

 mkdir ripristinato 

Annuncio pubblicitario

Digitiamo quanto segue per passare alla nuova directory e avviare testdisk da lì:

 cd restaurato/ 

Dobbiamo usare sudo con testdisk , quindi digitiamo quanto segue:

 sudo disco di prova 

La prima domanda che fa testdisk riguarda la registrazione. Può creare un nuovo file di registro, utilizzarne uno esistente o non registrare nulla. Non importa quale opzione scegli; non influirà sul modo in cui funziona testdisk .

Puoi semplicemente premere Invio per accettare l'opzione evidenziata e creare un nuovo file di registro. Verrà creato nella directory da cui hai avviato testdisk . Quando si effettua la selezione, testdisk chiede quale disco rigido contiene il file system su cui si desidera lavorare.

Elenca i dischi rigidi che può trovare, così come i file "/dev/loop" di squashfs . Ce ne sarà uno per ogni applicazione che hai installato in un snap . Sono di sola lettura, quindi non dovresti essere riuscito a eliminare nulla da questi file system.

C'è solo un disco rigido fisico in questo computer di prova, quindi abbiamo usato la freccia giù per evidenziare l'opzione "/dev/sda". Abbiamo quindi utilizzato la freccia destra per selezionare "Procedi", quindi abbiamo premuto Invio.

Annuncio pubblicitario

testdisk deve anche conoscere il tipo di partizione. Presenta un menu di opzioni, insieme al tipo di partizione che viene rilevata automaticamente in basso.

A meno che tu non abbia una buona ragione per non farlo, evidenzia il tipo di partizione che è stata rilevata automaticamente, quindi premi Invio.

Nel menu delle funzioni visualizzato, evidenziare "Avanzate", quindi premere Invio.

Apparirà il menu di selezione della partizione.

I file che stiamo cercando si trovano nella partizione del filesystem Linux. Abbiamo solo una partizione Linux sul nostro disco rigido, ma potresti averne di più.

Seleziona la partizione in cui si trovavano i file, usa i tasti freccia sinistra e destra per selezionare "Elenco", quindi premi Invio. Apparirà il menu di selezione dei file.

Utilizzare le frecce su e giù oi tasti PgUp e PgDn per navigare nell'elenco di file e directory. Premere la freccia destra o Invio per entrare in una directory e la freccia sinistra o Esc per uscire da una directory.

Annuncio pubblicitario

Stiamo cercando file che erano di proprietà di dave . I file per tutti gli account utente si trovano nella directory "Home". Quindi, evidenziamo la directory "Home", quindi possiamo premere la freccia destra o Invio per accedere a quella directory.

Tutti gli account utente vengono quindi elencati per noi. Evidenziamo dave , quindi premiamo la freccia destra o Invio per accedere a quella directory.

Ora possiamo vedere i file che appartengono all'account dave . Le voci in rosso sono state cancellate. Navighiamo attraverso i file e le directory finché non individuiamo i file che vogliamo recuperare.

Per recuperare un file, basta evidenziarlo, quindi premere c (minuscolo).

Il display cambia e ti dice di scegliere una destinazione per il file recuperato. Poiché abbiamo creato una directory chiamata "Restored" e da essa abbiamo avviato testdisk , la prima voce nell'elenco (.) è quella directory. Per recuperare questo file cancellato in quella directory, premiamo C (maiuscolo).

Dopo aver eseguito questa operazione, si torna alla visualizzazione di selezione dei file. Se vuoi recuperare più file, ripeti semplicemente il processo. Evidenziare un file eliminato, premere c (minuscolo) per copiarlo, quindi premere C (maiuscolo) per recuperarlo.

Lavorare con i file ripristinati

Dopo aver ripristinato un file, l'albero delle directory nella sua posizione originale viene ricostruito, il che è utile perché ti ricorda dove risiedeva il file originale sul disco rigido. Ciò significa che se devi copiarlo di nuovo, sai dove metterlo.

Annuncio pubblicitario

Se recuperi un numero di file da diverse posizioni del filesystem che hanno lo stesso nome file, dovranno comunque essere archiviati separatamente.

È possibile digitare quanto segue per visualizzare il contenuto della directory "Ripristinato":

 ls

Se hai chiesto a testdisk di creare un file di registro, sarà nella directory "Restored". Poiché i nostri file recuperati si trovavano in "/home/dave", sono stati copiati nella nostra directory "Restored", annidata in directory con lo stesso nome.

Possiamo passare alla directory "dave" copiata usando cd . Assicurati di non includere una barra iniziale ( / ) nel percorso: vuoi cambiare nella "home" locale, non nel sistema "/home".

Digitiamo quanto segue:

 cd casa/dave

I file recuperati si trovano in quella directory, quindi digitiamo:

 ls 

Annuncio pubblicitario

Diamo un'altra occhiata ai file recuperati usando l'opzione -l (elenco lungo):

ls -l

Poiché abbiamo usato sudo per avviare testdisk , i file recuperati sono stati ripristinati con "root" come proprietario. Possiamo riportare il proprietario in "dave" usando chown :

 sudo chown dave.dave * 

Digitiamo quanto segue per assicurarci che sia stata ripristinata la proprietà corretta:

 ls -l 

testdisk: codice per il rilievo

Quella sensazione di sollievo dopo aver recuperato un file importante che, solo un momento fa, sembrava irrimediabilmente perso, è qualcosa che apprezzerai sempre.

Ecco perché testdisk è un'utilità così utile. Dopo aver attraversato i menu e aver iniziato a ripristinare i file, è facile cadere in un ritmo di evidenziazione, c, C, ripetizione.

CORRELATI: I migliori laptop Linux per sviluppatori e appassionati