Odzyskiwanie danych z nośników

Każdemu zdarzyło się (jeśli nie, to na pewno się zdarzy), że nośnik, na którym przechowywał ważne dane uległ uszkodzeniu. Istnieje wiele firm, które specjalizują się w odzyskiwaniu danych, jednak zwykle jest to dosyć kosztowne. Jest też wiele programów komercyjnych i niekomercyjnych, przy pomocy których można samodzielnie odzyskać dane. Najprzyjemniej jednak zrobić to samodzielnie, wykorzystując wiersz poleceń Linuxa, co opiszę w dalszej części wpisu:)

Zanim przystąpisz do działania zastrzegam, że nie jestem odpowiedzialny za żadne błędy i straty, które możesz poczynić próbując samodzielnie odzyskać dane.

Próbując odzyskać dane należy pamiętać, aby uniemożliwić zapis na uszkodzony dysk, by nie pogorszyć jego stanu, to jest nie montować tego dysku w trybie do zapisu, nie uruchamiać z niego systemu itd. Ponadto, długotrwała praca dysku (a odzyskiwanie danych zwykle trwa długo) może drastycznie pogorszyć jego stan.

Do odzyskiwania danych będzie potrzebne w zasadzie wyłącznie narzędzie ddrescue (nie dd_rescue), a przydatne mogą okazać się także ntfsundelete z pakietu ntfs-3g,photorecscalpelforemost i testdisk. 

Analizę dysku należy rozpocząć od sprawdzenia, czy po podłączeniu widoczny jest w katalogu /dev (na przykład jako /dev/sdb, /dev/hdb). Jeżeli nie, to przedstawioną metodą (ani żadną mi znaną, nie wymagającą interwencji w fizyczną budowę dysku) nie da się nic zrobić. Jeżeli dysk pojawia się, to możemy przystąpić do działania.

Przed przystąpieniem do odzyskiwania można sprawdzić stan dysku poleceniem 

sudo gsmartcontrol

które pozwala sprawdzić, co zgłasza implementacja technologii S.M.A.R.T.

Do dzieła

Obraz dysku

Po pierwsze, należy zrobić obraz dysku (może wymagać uprawnień administratora, dlatego w stosowanym w przykładzie ubuntu polecenie sudo):

sudo ddrescue /dev/sdb /home/wrobel/obrazdysku /home/wrobel/obrazdysku.log

W razie zawieszenia się dysku w trakcie można przerwać działanie ddrescue kombinacją Ctrl+C, wyłączyć komputer i/lub odłączyć dysk, dać mu odpocząć i po ponownym uruchomieniu tym samym poleceniem wznowić działanie od miejsca gdzie zakończono (także w razie zawieszenia komputera).
Po zakonczeniu dzialania programu ddrescue można odpiąć dysk. Warto zrobić kopię pliku obrazdysku i wszystkie operacje wykonywać na niej, by nie musieć ponownie zgrywać obrazu z uszkodzonego dysku.

Teraz wykonując działania na obrazie lub jego kopii można próbować odzyskać dane.

Montowanie obrazu dysku

Najszczęśliwsi będziemy, gdy uda się zamontować istniejące partycje, w razie koniecznośi naprawić je i skopiować dane (lub odzyskać skasowane):

najpierw sprawdzić partycje obecne w obrazie:

sudo fdisk -u -l /home/wrobel/obrazdysku

Fdisk powinien pokazać wielkość sektora (sector size) S i początek każdej partycji P. Następnie mnożąc S*P dostajemy przesunięcie, które pozwoli zamontować partycję poleceniem:

sudo mount -t ext4 -o loop,offset=123456 obrazdysku /mnt/miejscedozamontowania

gdzie za 123456 wstawiamy ilocznyn S*P (możemy też posługując się powłoką bash/dash użyć $((S*P)), wstawiając za S i P odpowiednie wartości), a zamiast ext4 możemy wstawić rodzaj montowanej partycji (np ntfs, hpfs, iso9660, msdos, usbfs i inne, opisane w podręcznikach mounta). W punkcie zamontowania możemy szukać, co znajduje się na partycji.

Jeżeli podejrzewamy, że pliki do odzyskania zostały usunięte, możemy posłużyć się programami do odzyskiwania usuniętych plików (np. ntfsundelete, extundelete dostępne np. w repozytoriach ubuntu). 

Uszkodzone lub usunięte partycje może udać się odzyskać dzięki narzędziu testdisk.

Skanowanie obrazu w poszukiwaniu danych (file carving)

W przypadku niemożności zamontowania partycji lub konieczności przeskanowania jej przed zamontowaniem można podlączyć urządzenie partycję do /dev:

sudo losetup --offset 123456 /dev/loop1 obrazdysku

i przeskanować je w poszukiwaniu błędów:

sudo fsck /dev/loop1

a następnie zamontować.

sudo mount  /dev/loop1 -t ext4 -o loop /dev/loop1 /mnt/punktmontowania

Jeżeli ostatecznie nie uda się zamontować partycji, możemy próbować odzyskać dane przez skanowanie powierzchni, np. poleceniami photorec, scalpel, foremost z których szczególnie polecam to pierwsze, ze względu na dużą liczbę typów plików, które jest w stanie odzyskać.

Podsumowanie

Jeżeli powyższe metody nie pomogły Ci odzyskać danych, pozostają próby odzyskania ich przy pomocy innych narzędzi lub firm trzecich. Jeżeli jednak wykonując powyższe polecenia stwierdziłeś, że dane które chcesz odzyskać zostały nadpisane lub bardzo poważnie uszkodzone, nie licz na cuda.

Życzę powodzenia!