Metoda ta jest dużo prostsza. Jednak, tak jak wspomniałem wcześniej, nie może byæ jeszcze stosowana do plików wiêkszych niż 12 bloków.
W każdym iwêźle, który chcesz odzyskaæ musisz ustawiæ licznik podłączeñ
(linkcount) na jeden i czas skasowania (deletion time) na zero. Robi siê to
za pomocą polecenia mi (modify inode) w debugfs. Przykładowe
wywołanie, modyfikacja iwêzła 148003 (tego co wcześniej):
debugfs: mi <148003>
Mode [0100644]
User ID [503]
Group ID [100]
Size [6065]
Creation time [833201524]
Modification time [832708049]
Access time [826012887]
Deletion time [833201524] 0
Link count [0] 1
Block count [12]
File flags [0x0]
Reserved1 [0]
File acl [0]
Directory acl [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [594810]
Direct Block #1 [594811]
Direct Block #2 [594814]
Direct Block #3 [594815]
Direct Block #4 [594816]
Direct Block #5 [594817]
Direct Block #6 [0]
Direct Block #7 [0]
Direct Block #8 [0]
Direct Block #9 [0]
Direct Block #10 [0]
Direct Block #11 [0]
Indirect Block [0]
Double Indirect Block [0]
Triple Indirect Block [0]
Ustawiłem czas skasowania na 0, licznik podłączeñ na 1 i nacisnąłem Enter dla wszystkich innych pól. Jest to pewną niedogodnością, jeżeli masz wiele plików do odzyskania. Myślê jednak, że można z tym żyæ. Jeśli oczekujesz wygody, lepiej zacznij używaæ graficznego `systemu operacyjnego' ze ślicznym `Koszem na śmieci'.
Przy okazji: polecenie mi pokazuje `Czas stworzenia' (Creation
time) w iwêźle. To kłamstwo ! (lub, jak kto woli, pomyłka.) Prawda jest taka,
że nie można w systemie plików UNIX-a stwierdziæ kiedy dany plik został
utworzony. Pole st_ctime w struct stat zawiera `czas zmiany
iwêzła', czyli czas ostaniej zmiany, któregoś z parametrów iwêzła. To tyle
z dzisiejszej lekcji.
Nowsze wersje debugfs niż moja, prawdopodobnie nie wyświetalają
niektórych pól w iwêźle (szczególnie, Reserved1 i Fragment).
Po zmianie w iwêzłach, możesz wyjśæ z debugfs i napisaæ:
# e2fsck -f /dev/hda5
Pomysł polega na tym, że każdy ze skasowanych plików został odkasowany, ale
nie pojawił siê w żadnym katalogu. Program e2fsck umie to wykryæ i
doda pozycjê dla każdego z nich w katalogu /lost+found systemu
plików. (Jeżeli partycja była zamontowana w /usr, pliki pojawią siê
w /usr/lost+found, gdy ją zamontujesz.) Pracą, którą musisz jeszcze
zrobiæ, to nadanie plikom nazw i umieszczenie ich we właściwym miejscu
drzewa plików.
Po uruchomieniu e2fsck, wyświetli Ci on trochê informacji, ale zada
również pytania, które zniszczenia naprawiaæ. Odpowiadaj `yes' (tak) na
wszystko co dotyczy `summary information' lub iwêzłów, które zmieniałeś.
Resztê pozostawiam do Twojej decyzji, pamiêtaj, że nie jest najlepszą
metodą odpowiadanie `tak' na wszystkie pytania. Po skoñczeniu pracy
przez e2fsck, możesz ponownie zamontowaæ system plików.
Istnieje alternatywne rozwiązanie do pozwolenia, aby e2fsck utworzył
pliki w /lost+found. Możesz użyæ debugfs i stworzyæ w systemie
plików dołączenie (link) do iwêzła. Służy do tego polecenie link w
debugfs, po zmianach w samym iwêźle:
debugfs: link <148003> foo.txt
W ten sposób powstanie w bieżącym katalogu plik o nazwie foo.txt;
foo.txt bêdzie Twoim odzyskanym plikiem. Nadal musisz jednak uruchomiæ
e2fsck, aby uaktualniæ informacje ogólne, liczniki bloków itp. itd.