Ai șters vreodată un document și ai realizat imediat că ai nevoie de el? Ai nevoie de el înapoi cât mai curând posibil! Dar ce faci dacă fișierul este atât de recent creat încât nu s-a făcut încă o copie de siguranță? Din fericire, există o soluție!
rm: Scurtătură pentru regret?
Este mult prea ușor să folosești comanda `rm` și să te trezești privind la ecranul terminalului cu un sentiment tot mai puternic de regret. O mică eroare cu caracterele speciale și poți șterge mult mai multe date decât intenționai.
Sistemul de fișiere ext4, utilizat implicit în Linux, folosește inoduri pentru a stoca datele fiecărui fișier și un tabel de inoduri pentru a ține evidența acestora. Inodul conține metadate despre fișier, cum ar fi denumirea, proprietarul, permisiunile de acces și multe altele.
De asemenea, inodul include puncte de intrare către legăturile fizice (hard links) care indică spre fișier. Fiecare fișier are cel puțin o legătură fizică. Când creezi o nouă legătură fizică, numărul acestora crește cu unu. Când elimini o legătură fizică, numărul lor scade cu unu.
Când ștergi un fișier, inodul său este marcat ca neutilizat (disponibil pentru reutilizare), iar ultima legătură fizică este ștearsă. În acest moment, fișierul dispare din listele de directoare și devine inaccesibil.
Cu toate acestea, informația care forma conținutul fișierului rămâne încă prezentă pe hard disk. Dacă am putea corecta inodul astfel încât să conțină informațiile corecte, fișierul ar putea fi recuperat. Sigur, acest lucru ar funcționa doar dacă datele fișierului sunt intacte și nu au fost suprascrise.
Alternativ, se poate crea un nou inod, se pot copia datele existente din inodul vechi și se pot completa informațiile care lipsesc.
Acestea sunt acțiuni dificile. De obicei, când ștergi un fișier din greșeală, se întâmplă în cel mai nepotrivit moment. Este întotdeauna atunci când ai nevoie urgentă de acel fișier. Nu ai timp să te complici cu editoare de sector și alte utilitare complicate. În plus, dacă este vorba de un fișier creat recent, este posibil să nu existe o copie de rezervă, ceea ce nu te-ar ajuta oricum.
Aici intervine testdisk. Este ușor de utilizat și nu necesită cunoștințe tehnice detaliate despre sistemele de fișiere. Hai să vedem cum funcționează!
Instalarea testdisk
Pentru a instala testdisk pe Ubuntu, introdu următoarea comandă:
sudo apt-get install testdisk
Pe Fedora, utilizează următoarea comandă:
sudo dnf install testdisk
Pe Manjaro, utilizează pacman:
sudo pacman -Sy testdisk
Utilizarea testdisk
Deși rulează într-o fereastră de terminal, testdisk are o interfață grafică simplă. Utilizează săgețile pentru navigare și Enter pentru a selecta opțiunile. Pentru a organiza mai bine lucrurile, creează un folder special pentru fișierele recuperate.
Introdu următoarea comandă pentru a crea un director numit „recuperate”:
mkdir recuperate
Pentru a schimba directorul curent în „recuperate” și a lansa testdisk, utilizează:
cd recuperate/
Este necesar să rulezi testdisk cu drepturi de administrator (sudo), deci introdu următoarea comandă:
sudo testdisk
Testdisk te va întreba inițial despre jurnalizare. Poți crea un nou fișier jurnal, poți folosi unul existent sau poți să nu înregistrezi nimic. Opțiunea aleasă nu va afecta modul în care funcționează testdisk.
Apasă Enter pentru a accepta opțiunea implicită și a crea un nou fișier jurnal. Acesta va fi creat în directorul de unde ai pornit testdisk. Apoi, testdisk te va întreba despre hard disk-ul care conține sistemul de fișiere pe care vrei să lucrezi.
Acesta afișează hard disk-urile disponibile, precum și fișierele „/dev/loop”, care sunt fișiere de tip squashfs. Fiecare aplicație instalată printr-un „snap” are un astfel de fișier. Acestea sunt doar pentru citire, deci nu ai fi putut șterge nimic din ele.
Acest sistem de test are un singur hard disk fizic, deci am selectat opțiunea „/dev/sda” cu săgeata în jos. Apoi, am selectat „Proceed” cu săgeata dreapta și am apăsat Enter.
Testdisk are nevoie să știe tipul partiției. Va afișa un meniu de opțiuni, indicând tipul detectat automat în partea de jos.
Dacă nu există un motiv special, alege tipul detectat automat și apasă Enter.
În meniul de funcții, selectează „Advanced” și apasă Enter.
Va apărea meniul de selecție a partițiilor.
Fișierele pe care le căutăm sunt pe partiția sistemului de fișiere Linux. Acest sistem are o singură partiție Linux, dar este posibil să ai mai multe.
Selectează partiția unde se aflau fișierele, utilizează săgețile stânga și dreapta pentru a alege „List”, și apoi apasă Enter. Va apărea meniul de selecție a fișierelor.
Folosește săgețile sus și jos sau tastele PgUp și PgDn pentru a naviga în lista de fișiere și foldere. Apasă săgeata dreapta sau Enter pentru a intra într-un director, respectiv săgeata stânga sau Esc pentru a ieși dintr-un director.
Căutăm fișiere care aparțineau utilizatorului „dave”. Fișierele pentru toți utilizatorii sunt stocate în directorul „home”. Așadar, selectează directorul „home” și apasă săgeata dreapta sau Enter.
Sunt afișate toate conturile de utilizator. Selectează utilizatorul „dave” și apasă săgeata dreapta sau Enter pentru a intra în directorul său.
Acum vedem fișierele utilizatorului „dave”. Intrările marcate cu roșu au fost șterse. Navighează prin fișiere și directoare până găsești fișierele dorite.
Pentru a recupera un fișier, selectează-l și apasă tasta `c` (minusculă).
Ecranul se va schimba și îți va cere să selectezi o destinație pentru fișierul recuperat. Deoarece am creat un director numit „recuperate” și am pornit testdisk de acolo, prima intrare din listă (`.`) este acel director. Apasă tasta `C` (majusculă) pentru a recupera fișierul în acest director.
După această acțiune, vei reveni la meniul de selecție al fișierelor. Dacă dorești să recuperezi mai multe fișiere, repetă procesul. Selectează fișierul șters, apasă `c` (minusculă) pentru a-l copia și apoi `C` (majusculă) pentru a-l recupera.
Gestionarea fișierelor restaurate
Când restaurezi un fișier, se reconstruiește structura folderelor originale, ceea ce este util pentru a-ți reaminti unde se afla fișierul pe hard disk. Astfel, știi unde să-l copiezi înapoi, dacă este necesar.
Dacă recuperezi mai multe fișiere din locuri diferite care au același nume, acestea vor fi stocate separat.
Pentru a vedea conținutul directorului „recuperate”, introdu următoarea comandă:
ls
Dacă ai cerut testdisk să creeze un fișier jurnal, acesta va fi în directorul „recuperate”. Fișierele recuperate erau inițial în `/home/dave`, așadar au fost copiate în directorul `recuperate`, în aceeași structură de directoare.
Ne putem muta în directorul copiat `dave` folosind comanda `cd`. Asigură-te că nu incluzi o bară oblică înainte (`/`) în cale – vrem să ne mutăm în directorul local `home`, nu în directorul sistem `/home`.
Introdu următoarea comandă:
cd home/dave
Fișierele recuperate se află în acest director. Introdu următoarea comandă:
ls
Să vedem fișierele recuperate folosind opțiunea `-l` (listă lungă):
ls -l
Deoarece am utilizat `sudo` pentru a rula testdisk, fișierele recuperate au fost restaurate cu `root` ca proprietar. Putem schimba proprietarul înapoi la `dave` folosind comanda `chown`:
sudo chown dave.dave *
Pentru a verifica dacă proprietarul a fost schimbat corect, introdu următoarea comandă:
ls -l
testdisk: Un instrument de salvare
Sentimentul de ușurare când recuperezi un fișier important, care acum câteva clipe părea pierdut definitiv, este ceva ce vei aprecia întotdeauna.
Acesta este motivul pentru care testdisk este un instrument atât de util. După ce înveți să navighezi prin meniuri și începi recuperarea fișierelor, este ușor să intri într-un ritm de tip selectează, `c`, `C`, repetă.