Come recuperare file cancellati su Linux con testdisk

0
141
Un'illustrazione di una finestra di terminale su un computer Linux.
Fatmawati Achmad Zaenuri / Shutterstock

Hai mai cancellato un file e te ne sei immediatamente pentito? Ne hai bisogno indietro e in fretta! 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 Remorse?

È fin troppo facile usare il file rm comando e ti ritroverai a fissare una finestra di terminale con un crescente senso di rimpianto. Un piccolo errore con i caratteri jolly e puoi cancellare molto di più di quanto volevi.

Il file system Linux predefinito, ext4 usa gli inode per contenere i dati su ogni 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 i permessi e così via.

Contiene anche punti di ingresso a collegamenti fisici che puntano al file. Ogni file ha almeno un collegamento fisico. Ogni volta che crei un nuovo hard link, il numero di hard link aumenta di uno. Ogni volta che rimuovi un hard link, il numero di hard link 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 né accedervi.

Tuttavia, i dati che compongono il contenuto del file sono ancora presenti sul disco rigido. Se potessi applicare una patch all’inode in modo che contenga le informazioni corrette, il file verrebbe ripristinato. Ovviamente, 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.

Quelle 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 con gli editor di settore e altre utilità. Inoltre, se si tratta di un file che hai appena creato, probabilmente non è stato ancora eseguito il backup, quindi nemmeno quelli ti aiuteranno.

Questo dove testdisk entra. È facile da usare e non richiede una conoscenza dettagliata e di basso livello del filesystem. Diamo un’occhiata a come usarlo!

RELAZIONATO: Tutto quello che avresti sempre voluto sapere sugli inode su Linux

Installazione di testdisk

Installare testdisk su Ubuntu, usa questo comando:

sudo apt-get install testdisk

sudo apt-get install testdisk in una finestra di terminale.

Su Fedora, devi digitare:

sudo dnf install testdisk

sudo dnf installa testdisk in una finestra di terminale.

Su Manjaro, devi usare pacman:

sudo pacman -Sy testdisk

sudo pacman -Sy testdisk in una finestra di terminale.

Utilizzando testdisk

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 “ripristinata” per i nostri file ripristinati:

mkdir restored

mkdir ripristinato in una finestra di terminale.

Digitiamo quanto segue per passare alla nuova directory e iniziare testdisk da li:

cd restored/

cd ripristinato / in una finestra di terminale.

Dobbiamo usare sudo con testdisk, quindi digitiamo quanto segue:

sudo testdisk

sudo testdisk in una finestra di terminale.

La prima domanda testdisk chiede riguarda la registrazione. Può creare un nuovo file di registro, usarne uno esistente o non registrare nulla. Non importa quale opzione scegli; non influenzerà il modo in cui testdisk opera.

Le opzioni di registrazione in testdisk in una finestra di terminale.

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

Elenca i dischi rigidi che riesce a trovare, nonché i file squashfs File “/ dev / loop”. Ce ne sarà uno per ogni applicazione che hai installato da un file snap. Sono di sola lettura, quindi non dovresti essere riuscito a eliminare nulla da questi file system.

Un menu del disco rigido in testdisk in una finestra di terminale.

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

"Procedi" selezionato in una finestra di terminale.

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

Menu del tipo di tabella delle partizioni in testdisk in una finestra di terminale.

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.

"Avanzate" selezionato nel menu delle funzioni in una finestra del terminale.

Apparirà il menu di selezione della partizione.

Il menu di selezione della partizione in testdisk in una finestra di terminale.

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

Selezionare la partizione in cui si trovavano i file, utilizzare i tasti freccia sinistra e destra per selezionare “Elenco”, quindi premere Invio. Apparirà il menu di selezione dei file.

Il menu di selezione dei file in testdisk in una finestra di terminale.

Utilizzare le frecce su e giù o i tasti PgUp e PgDn per navigare nell’elenco di file e directory. Premere la freccia destra o Invio per accedere a una directory e la freccia sinistra o Esc per uscire da una directory.

Stiamo cercando file 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 entrare in quella directory.

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

Una directory Home in testdisk in una finestra di terminale.

Ora possiamo vedere i file che appartengono a dave account. Le voci in rosso sono state eliminate. Navighiamo attraverso i file e le directory finché non troviamo i file che vogliamo recuperare.

File eliminati in TestDisk in una finestra di terminale.

Per recuperare un file, è sufficiente evidenziarlo e quindi premere c (minuscolo).

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

Il menu di destinazione del file in TestDisk in una finestra di terminale.

Dopo aver eseguito questa operazione, si torna alla schermata di selezione dei file. Se desideri recuperare più file, ripeti 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, viene ricostruito l’albero delle directory nella sua posizione originale, il che è utile perché ti ricorda dove sul disco rigido risiedeva il file originale. Ciò significa che se hai bisogno di copiarlo di nuovo, sai dove metterlo.

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

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

ls

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

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

Digitiamo quanto segue:

cd home/dave

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

ls

È in una finestra di terminale.

Diamo un’altra occhiata ai file recuperati utilizzando l’estensione -l (elenco lungo) opzione:

ls -l

ls -l in una finestra di terminale.

Perché abbiamo usato sudo lanciare testdisk, i file recuperati sono stati ripristinati con “root” come proprietario. Possiamo cambiare il proprietario di nuovo in “dave” usando chown:

sudo chown dave.dave *

sudo chown dave.dave * in una finestra di terminale.

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

ls -l

ls -l in una finestra di terminale.

testdisk: codice per il rilievo

Quella sensazione di sollievo dopo aver recuperato un file importante che, fino a 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.