Како опоравити избрисане датотеке на Линуку помоћу тестдиск-а

Da li vam se ikada desilo da obrišete fajl i odmah zažalite? Potreban vam je nazad, i to odmah! Ali šta ako je fajl nov, i još uvek nije napravljena rezervna kopija? Srećom, postoji rešenje za takve situacije.

rm: Da li je to skraćenica od kajanje?

Previše je lako koristiti komandu rm i naći se kako gledate u terminal s sve većim osećajem kajanja. Jedna mala greška sa džoker znakovima i možete izbrisati mnogo više nego što ste nameravali.

Podrazumevani Linux sistem datoteka, ext4, koristi inode za čuvanje podataka o svakom fajlu i inode tabelu za praćenje tih inoda. Inode sadrži metapodatke o fajlu, kao što su njegovo ime, vlasnik, dozvole i slično.

Takođe sadrži ulazne tačke na čvrste veze koje upućuju na fajl. Svaki fajl ima najmanje jednu čvrstu vezu. Svaki put kada kreirate novu čvrstu vezu, broj čvrstih veza se poveća za jedan. Svaki put kada uklonite čvrstu vezu, broj čvrstih veza u inode se smanji za jedan.

Kada izbrišete fajl, inode se označi kao neiskorišćen i spreman za ponovnu upotrebu. Tada se uklanja poslednja čvrsta veza. Fajl se više ne pojavljuje na listi direktorijuma i ne može mu se pristupiti.

Ipak, podaci koji su činili sadržaj fajla i dalje su prisutni na hard disku. Kada biste mogli da „zakrpite“ inode tako da sadrži tačne informacije, fajl bi bio vraćen. Naravno, ovo bi funkcionisalo samo ako podaci na hard disku nisu prepisani.

Alternativno, možete kreirati novi inode, kopirati preostale podatke iz starog i zameniti one koji nedostaju.

Ovo nisu jednostavne operacije. Obično, kada greškom izbrišete fajl, to je u najgorem mogućem trenutku. Uvek je to fajl koji vam je potreban, i to sada. Nemate vremena da se bavite sektor editorima i drugim alatima. Osim toga, ako ste fajl upravo kreirali, verovatno još nema rezervnu kopiju, tako da ni to ne pomaže.

Ovde u igru stupa testdisk. Jednostavan je za korišćenje i ne zahteva detaljno poznavanje sistema datoteka na niskom nivou. Pogledajmo kako se koristi!

Instaliranje testdisk-a

Da biste instalirali testdisk na Ubuntu, koristite sledeću komandu:

sudo apt-get install testdisk

Na Fedori, treba da ukucate:

sudo dnf install testdisk

Na Manjaru morate koristiti pacman:

sudo pacman -Sy testdisk

Korišćenje testdisk-a

Iako radi u terminalu, testdisk ima jednostavan interfejs. Koristite strelice za navigaciju i Enter za odabir. Najbolje je da napravite direktorijum za oporavljene fajlove.

Kucamo sledeće da bismo napravili direktorijum pod imenom „restored“ za naše oporavljene fajlove:

mkdir restored

Kucamo sledeće da bismo se prebacili u novi direktorijum i odatle pokrenuli testdisk:

cd restored/

Moramo da koristimo sudo sa testdisk-om, pa kucamo sledeće:

sudo testdisk

Prvo pitanje koje testdisk postavlja je u vezi sa evidentiranjem. Može da kreira novu datoteku evidencije, da koristi postojeću ili da ne evidentira ništa. Nije bitno koju opciju izaberete; to neće uticati na način na koji testdisk radi.

Možete samo da pritisnete Enter da prihvatite označenu opciju i kreirate novu datoteku evidencije. Ona će biti kreirana u direktorijumu iz kog ste pokrenuli testdisk. Kada odaberete opciju, testdisk vas pita na kom hard disku se nalazi sistem datoteka na kom želite da radite.

Navodi hard diskove koje može da pronađe, kao i „squashfs“ fajlove „/dev/loop“. Biće jedan od tih za svaku aplikaciju koju ste instalirali preko snap-a. Oni su samo za čitanje, tako da niste trebali da obrišete ništa sa tih sistema datoteka.

U ovom test računaru postoji samo jedan fizički hard disk, pa smo koristili strelicu nadole da označimo opciju „/dev/sda“. Zatim smo koristili strelicu udesno da bismo odabrali „Proceed“, a zatim pritisnuli Enter.

Testdisk takođe treba da zna tip particije. Prikazuje meni opcija, zajedno sa tipom particije koji je automatski detektovan na dnu.

Osim ako nemate dobar razlog da to ne uradite, označite tip particije koji je automatski detektovan, a zatim pritisnite Enter.

U meniju funkcija koji se pojavi, označite „Advanced“, a zatim pritisnite Enter.

Pojaviće se meni za odabir particije.

Fajlovi koje tražimo nalaze se na particiji Linux sistema datoteka. Imamo samo jednu Linux particiju na hard disku, ali možda imate više.

Izaberite particiju na kojoj su se nalazili vaši fajlovi, koristite strelice levo i desno da izaberete „List“, a zatim pritisnite Enter. Pojaviće se meni za odabir fajla.

Koristite strelice nagore i nadole, ili tastere PgUp i PgDn da se krećete po listi fajlova i direktorijuma. Pritisnite strelicu udesno ili Enter da uđete u direktorijum, a strelicu ulevo ili Esc da izađete iz direktorijuma.

Tražimo fajlove koji su bili u vlasništvu Dejva. Fajlovi za sve korisničke naloge nalaze se u direktorijumu „Home“. Označavamo direktorijum „Home“, a zatim možemo pritisnuti ili strelicu udesno ili Enter da uđemo u taj direktorijum.

Svi korisnički nalozi su tada navedeni. Označimo Dejva, a zatim pritisnemo strelicu udesno ili Enter da uđemo u taj direktorijum.

Sada možemo da vidimo fajlove koji pripadaju Dejvovom nalogu. Unosi označeni crvenom bojom su obrisani. Krećemo se kroz fajlove i direktorijume dok ne pronađemo fajlove koje želimo da oporavimo.

Da biste oporavili fajl, samo ga označite, a zatim pritisnite c (malo slovo).

Ekran se menja i kaže vam da izaberete odredište za oporavljeni fajl. Pošto smo napravili direktorijum pod imenom „Restored“ i iz njega pokrenuli testdisk, prvi unos na listi (.) je taj direktorijum. Da biste vratili izbrisani fajl u taj direktorijum, pritisnite C (veliko slovo).

Nakon što ovo uradite, vraćate se na ekran za odabir fajlova. Ako želite da oporavite još fajlova, samo ponovite postupak. Označite izbrisani fajl, pritisnite c (malo slovo) da biste ga kopirali, a zatim pritisnite C (veliko slovo) da biste ga oporavili.

Rad sa oporavljenim fajlovima

Nakon što vratite fajl, stablo direktorijuma do originalne lokacije se rekonstruiše, što je korisno jer vas podseća gde se na hard disku nalazio originalni fajl. To znači da, ako treba da ga kopirate nazad, znate gde da ga stavite.

Ako oporavite više fajlova sa različitih lokacija sistema datoteka koji imaju isto ime fajla, oni će ionako morati da se čuvaju odvojeno.

Možete da unesete sledeće da biste videli sadržaj direktorijuma „Restored“:

ls

Ako ste tražili od testdisk-a da kreira datoteku evidencije, ona će biti u direktorijumu „Restored“. Pošto su se naši oporavljeni fajlovi nalazili na „/home/dave“, oni su kopirani u naš „Restored“ direktorijum, ugnježdeni u direktorijume sa istim imenom.

Možemo da pređemo u kopirani direktorijum „dave“ koristeći cd. Pazite da ne uključite početnu kosu crtu (/) na putanji – želite da promenite lokalni „home“, a ne sistemski „/home“.

Kucamo sledeće:

cd home/dave

Oporavljeni fajlovi se nalaze u tom direktorijumu, pa kucamo:

ls

Pogledajmo ponovo oporavljene fajlove koristeći opciju -l (duga lista):

ls -l

Pošto smo koristili sudo da pokrenemo testdisk, oporavljeni fajlovi su vraćeni sa „root“ kao vlasnikom. Možemo da promenimo vlasnika nazad u „dave“ koristeći chown:

sudo chown dave.dave *

Kucamo sledeće da bismo se uverili da je ispravno vlasništvo vraćeno:

ls -l

Testdisk: Kod za spas

Taj osećaj olakšanja nakon što povratite važan fajl koji se pre malo vremena činio nepovratno izgubljenim je nešto što ćete uvek ceniti.

Zato je testdisk tako koristan alat. Nakon što prođete kroz menije i počnete da vraćate fajlove, lako je uhvatiti ritam označavanja, c, C, ponovite.