Как да възстановите изтрити файлове в Linux с testdisk

Случвало ли ви се е да изтриете файл и моментално да съжалявате? Трябва ти обратно и то бързо! Но какво ще стане, ако файлът е толкова нов, че все още не е архивиран? За щастие има нещо, което можете да направите по въпроса.

rm: Съкращение от Remorse?

Прекалено лесно е да използвате командата rm и да се окажете, че се взирате в прозореца на терминала с все по-дълбоко чувство на съжаление. Една малка грешка със заместващи знаци и можете да изтриете много повече, отколкото сте възнамерявали.

Файловата система на Linux по подразбиране, ext4 използва inodes за съхраняване на данни за всеки файл и таблица inode за проследяване на inodes. Inode съдържа метаданни за файла, като името му, кой го притежава, какви са разрешенията и т.н.

Той също така съдържа входни точки към твърди връзки, които сочат към файла. Всеки файл има поне една твърда връзка. Всеки път, когато създавате нова твърда връзка, броят на твърдите връзки се увеличава с една. Всеки път, когато премахнете твърда връзка, броят на твърдите връзки в inode се намалява с едно.

Когато изтриете файл, който inode е маркирал като неизползван (и готов за повторна употреба), последната твърда връзка се премахва. Когато това се случи, файлът няма да се появи в списъците на директории и не може да бъде използван или достъпен.

Въпреки това данните, съставляващи съдържанието на файла, все още присъстват на твърдия диск. Ако можете обаче да поправите inode, така че да съдържа правилната информация, файлът ще бъде възстановен. Разбира се, това ще работи само ако данните, които съставляват файла на твърдия диск, останат непокътнати и не бъдат презаписани.

Като алтернатива можете да създадете нов inode, да копирате оцелелите данни от стария inode и след това да замените липсващите битове.

Това са нетривиални дейности. Обикновено, когато изтриете файл по погрешка, това е в най-лошия възможен момент. Винаги е, когато имате нужда от този файл, и имате нужда от него сега. Нямате време да се занимавате и цапате с редактори на сектори и други помощни програми. Освен това, ако това е файл, който току-що създадохте, вероятно все още не е архивиран, така че и те няма да ви помогнат.

  Как да слушате радио Pandora на Linux

Тук идва тестовият диск. Той е лесен за използване и не изисква подробни познания на ниско ниво за файловата система. Нека да разгледаме как да го използваме!

Инсталиране на testdisk

За да инсталирате testdisk в Ubuntu, използвайте тази команда:

sudo apt-get install testdisk

Във Fedora трябва да напишете:

sudo dnf install testdisk

На Manjaro трябва да използвате pacman:

sudo pacman -Sy testdisk

Използване на testdisk

Въпреки че работи в терминален прозорец, testdisk има елементарен интерфейс. Използвате клавишите със стрелки за навигация и Enter, за да направите избор. За да поддържате нещата изрядни, най-добре е да създадете директория за възстановени файлове.

Пишем следното, за да създадем директория, наречена „restored“ за нашите възстановени файлове:

mkdir restored

Пишем следното, за да превключим към новата директория и да стартираме testdisk от там:

cd restored/

Трябва да използваме sudo с testdisk, така че въвеждаме следното:

sudo testdisk

Първият въпрос, който testdisk задава, е относно регистрирането. Може да създаде нов регистрационен файл, да използва съществуващ или да не регистрира нищо. Няма значение коя опция ще изберете; това няма да повлияе на начина, по който работи тестовия диск.

Можете просто да натиснете Enter, за да приемете маркираната опция и да създадете нов регистрационен файл. Той ще бъде създаден в директорията, от която сте стартирали testdisk. Когато направите своя избор, testdisk пита кой твърд диск съдържа файловата система, върху която искате да работите.

Той изброява твърдите дискове, които може да намери, както и файловете „/dev/loop“ squashfs. Ще има едно от тях за всяко приложение, което сте инсталирали от един момент. Те са само за четене, така че не е трябвало да успеете да изтриете нищо от тези файлови системи.

В този тестов компютър има само един физически твърд диск, така че използвахме стрелката надолу, за да подчертаем опцията „/dev/sda“. След това използвахме стрелката надясно, за да изберем „Продължи“, след което натиснахме Enter.

  Как да извлечете информация от MKV на Linux

testdisk също трябва да знае типа на дяла. Той представя меню с опции, заедно с типа дял, който е открит автоматично в долната част.

Освен ако нямате основателна причина да не го правите, маркирайте типа дял, който е автоматично открит, и след това натиснете Enter.

В менюто с функции, което се показва, маркирайте „Разширени“ и след това натиснете Enter.

Ще се появи менюто за избор на дял.

Файловете, които търсим, са в дяла на файловата система на Linux. Имаме само един Linux дял на нашия твърд диск, но може да имате повече.

Изберете дяла, на който са били вашите файлове, използвайте клавишите със стрелки наляво и надясно, за да изберете „Списък“ и след това натиснете Enter. Ще се появи менюто за избор на файл.

Използвайте стрелките нагоре и надолу или клавишите PgUp и PgDn, за да навигирате в списъка с файлове и директории. Натиснете дясна стрелка или Enter, за да влезете в директория, и лявата стрелка или Esc, за да излезете от директория.

Търсим файлове, които са били собственост на Dave. Файловете за всички потребителски акаунти са в директорията „Начало“. И така, маркираме директорията „Начало“ и след това можем да натиснете или дясната стрелка, или Enter, за да влезем в тази директория.

След това всички потребителски акаунти са изброени за нас. Маркираме dave и след това натискаме стрелка надясно или Enter, за да влезем в тази директория.

Вече можем да видим файловете, които принадлежат на акаунта на Dave. Записите в червено са изтрити. Придвижваме се през файловете и директориите, докато не намерим файловете, които искаме да възстановим.

За да възстановите файл, просто го маркирайте и след това натиснете c (малки букви).

Дисплеят се променя и ви казва да изберете дестинация за възстановения файл. Тъй като създадохме директория, наречена “Restored” и стартирахме тестов диск от нея, първият запис в списъка (.) е тази директория. За да възстановим този изтрит файл в тази директория, натискаме C (главни букви).

  Как да споделяте файлове във VirtualBox машина на Linux

След като направите това, се връщате към екрана за избор на файлове. Ако искате да възстановите още файлове, просто повторете процеса. Маркирайте изтрит файл, натиснете c (малки букви), за да го копирате, и след това натиснете C (главни), за да го възстановите.

Работа с възстановени файлове

След като възстановите файл, дървото на директориите до първоначалното му местоположение се възстановява, което е полезно, защото ви напомня къде на твърдия диск се намира оригиналният файл, използван. Това означава, че ако трябва да го копирате обратно, знаете къде да го поставите.

Ако възстановите няколко файла от различни местоположения на файловата система, които имат едно и също име на файл, те така или иначе ще трябва да се съхраняват отделно.

Можете да въведете следното, за да видите съдържанието на директорията „Възстановена“:

ls

Ако сте помолили testdisk да създаде регистрационен файл, той ще бъде в директорията „Restored“. Тъй като нашите възстановени файлове се намират в “/home/dave”, те са копирани в нашата директория “Restored”, вложени в директории със същото име.

Можем да преминем в копираната директория „dave“ с помощта на cd. Уверете се, че не включвате водеща наклонена черта (/) в пътя – искате да промените в локалния „home“, а не в системния „/home“.

Пишем следното:

cd home/dave

Възстановените файлове са в тази директория, така че въвеждаме:

ls

Нека да разгледаме отново възстановените файлове с помощта на опцията -l (дълъг списък):

ls -l

Тъй като използвахме sudo за стартиране на testdisk, възстановените файлове бяха възстановени с „root“ като собственик. Можем да променим собственика обратно на „dave“, използвайки chown:

sudo chown dave.dave *

Въведем следното, за да се уверим, че правилната собственост е възстановена:

ls -l

testdisk: Код за облекчение

Това чувство на облекчение, след като възстановите важен файл, който само преди миг се почувства безвъзвратно изгубен, е нещо, което винаги ще оцените.

Ето защо testdisk е толкова удобна помощна програма. След като преминете през менютата и можете да започнете да възстановявате файлове, е лесно да изпаднете в ритъм на подчертаване, c, C, повторете.