Jak odzyskać usunięte pliki w systemie Linux za pomocą testdisk

Czy kiedykolwiek usunąłeś plik i od razu tego pożałowałeś? Potrzebujesz go z powrotem i to szybko! Ale co, jeśli plik jest tak nowy, że nie ma jeszcze kopii zapasowej? Na szczęście możesz coś z tym zrobić.

rm: skrót od Remorse?

Bardzo łatwo jest użyć polecenia rm i wpatrywać się w okno terminala z pogłębiającym się poczuciem żalu. Jeden mały błąd z symbolami wieloznacznymi i możesz wymazać znacznie więcej, niż zamierzałeś.

Domyślny system plików Linuksa, ext4, używa i-węzłów do przechowywania danych o każdym pliku i tabeli i-węzłów do śledzenia i-węzłów. I-węzeł zawiera metadane dotyczące pliku, takie jak jego nazwa, właściciel, uprawnienia i tak dalej.

Zawiera również punkty wejścia do twardych linków, które wskazują na plik. Każdy plik ma co najmniej jedno łącze twarde. Za każdym razem, gdy tworzysz nowy twardy link, liczba twardych linków rośnie o jeden. Za każdym razem, gdy usuwasz twarde łącze, liczba twardych łączy w i-węźle jest zmniejszana o jeden.

Kiedy usuwasz plik, który i-węzeł oznaczył jako nieużywany (i gotowy do ponownego użycia), ostatni twardy link jest usuwany. W takim przypadku plik nie pojawi się na liście katalogów i nie będzie można go użyć ani uzyskać do niego dostępu.

Jednak dane składające się na zawartość pliku są nadal obecne na dysku twardym. Gdybyś mógł załatać i-węzeł tak, aby zawierał poprawne informacje, plik zostałby przywrócony. Oczywiście zadziała to tylko wtedy, gdy dane, które tworzą plik na dysku twardym, pozostaną nienaruszone i nie zostaną nadpisane.

Alternatywnie, możesz utworzyć nowy i-węzeł, skopiować pozostałe dane ze starego i-węzła, a następnie zastąpić brakujące bity.

To działania nietrywialne. Zwykle, gdy przez pomyłkę usuwasz plik, dzieje się to w najgorszym możliwym momencie. Jest to zawsze, gdy potrzebujesz tego pliku i potrzebujesz go teraz. Nie masz czasu, aby się ubrudzić edytorami sektorowymi i innymi narzędziami. Ponadto, jeśli jest to właśnie utworzony plik, prawdopodobnie nie utworzono jeszcze jego kopii zapasowej, więc te też ci nie pomogą.

Tutaj pojawia się testdisk. Jest łatwy w użyciu i nie wymaga szczegółowej, niskiego poziomu znajomości systemu plików. Zobaczmy, jak go używać!

Instalowanie testdisk

Aby zainstalować testdisk na Ubuntu, użyj tego polecenia:

sudo apt-get install testdisk

sudo apt-get install testdisk w oknie terminala.

W Fedorze musisz wpisać:

sudo dnf install testdisk

sudo dnf zainstaluj testdisk w oknie terminala.

Na Manjaro musisz użyć pacmana:

sudo pacman -Sy testdisk

sudo pacman -Sy testdisk w oknie terminala.

Korzystanie z testdisk

Chociaż działa w oknie terminala, testdisk ma podstawowy interfejs. Do nawigacji służą klawisze strzałek, a do wyboru – Enter. Aby zachować porządek, najlepiej jest utworzyć katalog na przywrócone pliki.

Wpisujemy następujące polecenie, aby utworzyć katalog o nazwie „przywrócony” dla naszych przywróconych plików:

mkdir restored

mkdir przywrócony w oknie terminala.

Wpisujemy następujące polecenie, aby przejść do nowego katalogu i stamtąd uruchomić testdisk:

cd restored/

cd przywrócony / w oknie terminala.

Musimy użyć sudo z testdisk, więc wpisujemy:

sudo testdisk

sudo testdisk w oknie terminala.

Pierwsze pytanie, jakie zadaje testdisk, dotyczy logowania. Może utworzyć nowy plik dziennika, użyć istniejącego lub w ogóle niczego nie rejestrować. Nie ma znaczenia, którą opcję wybierzesz; nie wpłynie to na sposób działania testdisk.

Opcje logowania w testdisk w oknie terminala.

Możesz po prostu nacisnąć klawisz Enter, aby zaakceptować podświetloną opcję i utworzyć nowy plik dziennika. Zostanie utworzony w katalogu, z którego uruchomiłeś testdisk. Po dokonaniu wyboru testdisk zapyta, który dysk twardy zawiera system plików, na którym chcesz pracować.

Zawiera listę dysków twardych, które może znaleźć, a także pliki „/ dev / loop” programu squashfs. Będzie jeden z nich dla każdej zainstalowanej aplikacji w mgnieniu oka. Są tylko do odczytu, więc nie powinieneś był usuwać niczego z tych systemów plików.

Menu dysku twardego na dysku testowym w oknie terminala.

W tym komputerze testowym jest tylko jeden fizyczny dysk twardy, więc użyliśmy strzałki w dół, aby podświetlić opcję „/ dev / sda”. Następnie użyliśmy strzałki w prawo, aby wybrać „Kontynuuj”, a następnie wcisnęliśmy Enter.

testdisk musi również znać typ partycji. Przedstawia menu opcji wraz z typem partycji, która jest automatycznie wykrywana u dołu.

Menu typu tablicy partycji w testdisk w oknie terminala.

Jeśli nie masz dobrego powodu, aby tego nie robić, podświetl typ partycji, który jest automatycznie wykrywany, a następnie naciśnij klawisz Enter.

W wyświetlonym menu funkcji podświetl „Advanced” i naciśnij Enter.

Pojawi się menu wyboru partycji.

Menu wyboru partycji na dysku testowym w oknie terminala.

Pliki, których szukamy, znajdują się na partycji systemu plików Linuksa. Mamy tylko jedną partycję Linuksa na naszym dysku twardym, ale możesz mieć więcej.

Wybierz partycję, na której znajdowały się pliki, użyj lewego i prawego klawisza strzałki, aby wybrać „List”, a następnie naciśnij Enter. Pojawi się menu wyboru plików.

Menu wyboru plików na dysku testowym w oknie terminala.

Użyj strzałek w górę iw dół lub klawiszy PgUp i PgDn, aby poruszać się po liście plików i katalogów. Naciśnij strzałkę w prawo lub Enter, aby wejść do katalogu, a strzałkę w lewo lub Esc, aby wyjść z katalogu.

Szukamy plików, których właścicielem był Dave. Pliki dla wszystkich kont użytkowników znajdują się w katalogu „Home”. Dlatego podświetlamy katalog „Home”, a następnie możemy nacisnąć strzałkę w prawo lub Enter, aby wejść do tego katalogu.

Wszystkie konta użytkowników są następnie wyświetlane dla nas. Podświetlamy dave, a następnie naciskamy strzałkę w prawo lub Enter, aby wejść do tego katalogu.

Katalog domowy na dysku testowym w oknie terminala.

Teraz możemy zobaczyć pliki należące do konta dave. Wpisy zaznaczone na czerwono zostały usunięte. Poruszamy się po plikach i katalogach, aż zlokalizujemy pliki, które chcemy odzyskać.

Usunięte pliki w TestDisk w oknie terminala.

Aby odzyskać plik, po prostu go zaznacz, a następnie naciśnij c (małe litery).

Wyświetlacz zmieni się i wyświetli komunikat o wyborze miejsca docelowego dla odzyskanego pliku. Ponieważ utworzyliśmy katalog o nazwie „Przywrócony” i uruchomiliśmy z niego testdisk, pierwszy wpis na liście (.) Jest tym katalogiem. Aby odzyskać ten usunięty plik do tego katalogu, naciskamy C (wielkie litery).

Menu miejsca docelowego pliku w TestDisk w oknie terminala.

Po wykonaniu tej czynności wrócisz do ekranu wyboru plików. Jeśli chcesz odzyskać więcej plików, po prostu powtórz proces. Zaznacz usunięty plik, naciśnij c (małe litery), aby go skopiować, a następnie naciśnij C (wielkie litery), aby go odzyskać.

Praca z przywróconymi plikami

Po przywróceniu pliku drzewo katalogów zostanie odtworzone do jego pierwotnej lokalizacji, co jest przydatne, ponieważ przypomina o miejscu na dysku twardym, w którym znajdował się oryginalny plik. Oznacza to, że jeśli chcesz go skopiować, wiesz, gdzie go umieścić.

Jeśli odzyskasz wiele plików z różnych lokalizacji systemu plików, które mają taką samą nazwę, i tak będą musiały być przechowywane osobno.

Możesz wpisać następujące informacje, aby wyświetlić zawartość katalogu „Przywrócone”:

ls

Jeśli poprosiłeś testdisk o utworzenie pliku dziennika, znajdzie się on w katalogu „Przywrócono”. Ponieważ nasze odzyskane pliki znajdowały się w „/ home / dave”, zostały skopiowane do naszego katalogu „Przywrócone”, zagnieżdżonego w katalogach o tej samej nazwie.

Do skopiowanego katalogu „dave” możemy przejść za pomocą cd. Upewnij się, że na ścieżce nie ma poprzedzającego ukośnika (/) – chcesz zmienić na lokalny „home”, a nie systemowy „/ home”.

Wpisujemy:

cd home/dave

Odzyskane pliki znajdują się w tym katalogu, więc wpisujemy:

ls

Znajduje się w oknie terminala.

Przyjrzyjmy się ponownie odzyskanym plikom za pomocą opcji -l (długa lista):

ls -l

ls -l w oknie terminala.

Ponieważ użyliśmy sudo do uruchomienia testdisk, odzyskane pliki zostały przywrócone z „rootem” jako właścicielem. Możemy zmienić właściciela z powrotem na „dave” za pomocą chown:

sudo chown dave.dave *

sudo chown dave.dave * w oknie terminala.

Wpisujemy następujące informacje, aby upewnić się, że przywrócono właściwą własność:

ls -l

ls -l w oknie terminala.

testdisk: Code for Relief

To uczucie ulgi po odzyskaniu ważnego pliku, który jeszcze przed chwilą poczuł się bezpowrotnie utracony, jest czymś, co zawsze docenisz.

Dlatego testdisk jest tak przydatnym narzędziem. Po przejściu przez menu i rozpoczęciu przywracania plików, łatwo wpaść w rytm podświetlenia, c, C, powtórz.