Blog (15)
Komentarze (117)
Recenzje (0)

Odzyskiwanie danych, czyli jak (prawie) straciłem 30GB danych i weekend

@redsplOdzyskiwanie danych, czyli jak (prawie) straciłem 30GB danych i weekend31.08.2017 23:39

W połowie lipca robiłem mały maintentance na moim serwerze polegający na poprawieniu skryptu PHP do wrzucania obrazków przez przeglądarkę, który po aktualizacji PHP przestał działać; Problem był całkiem prosty do rozwiązania (okazało się że tmpfs był pełny, na moim serwerze to tylko ~430mb - hehe, Raspberry Pi), ale zanim udało mi się do tego dojść, wyrządziłem całkiem dużych szkód swoim plikom.

Pierwszym moim błędem przy troubleshootingu było skopiowanie skryptu uploadującego do katalogu nazwanego temp/ - domyślnie skrypt przebywa w katalogu upload/ i wrzuca pliki do tmp/, z którego w zależności czy będę ich kiedyś potrzebował, albo przenoszę, albo zostawiam na dłuższy, bliżej nieokreślony czas (aka forever). W pewnym momencie chciałem zacząć troubleshootowanie od początku żeby spróbować naprawy w inny sposób - wykonałem komendę rm -R t<TAB>, a autouzupełnianie mnie zawiodło, przez co usunąłem katalog z około 30GB plików, które po części były ważnymi danymi.

Pierwsze co przyszło mi do głowy to odmontowanie partycji z danymi, co miało zapobiec zapisowi przypadkowych danych w miejscu w którym leżała zawartość katalog tmp/. Potem zacząłem szukać. Google pokazało mi pare małych utilów do odzyskiwania danych pod linuxa, sam zdecydowałem się na extundelete, który miał całkiem dużo pozytywnych opinii cd. poprawnego odzyskania danych.

Configuration hell

Jak widać na wyżej załączonym obrazku, pozornie prosty util ma całkiem dużo opcji. Po chwili studiowania --help, zacząłem od ponownego zamontowania filesystemu używając `mount -o ro /dev/sda1 /mnt`, poczym wykonałem `extundelete --restore-directory 'recovery/' --restore-files '/mnt/a/tmp/'`(byłem w /home/reds/, dlatego recovery/), co po chwili wywaliło się, krzycząc o niewystarczających prawach dostępu. Aplikując sudo do początku komendy udało mi się dojść do momentu w którym narzędzie zaczyna skanować dysk, ale extundelete stwierdził, że nie będzie zapisywał danych do mojego katalogu. Po paru innych kombinacjach parametrów spróbowałem `sudo extundelete --restore-all /mnt/` będąc w /, co wreszcie zaczęło zapisywać odzyskane pliki do

Problems continue...

Po paru odzyskanych GB, zorientowałem się że powoli kończy mi się miejsce na karcie SD w malince. Setup z dyskami na moim serwerze zakłada, że dysk 2TB z danymi będzie podpięty zawsze i będzie miał przynajmniej pare GB wolnego miejsca, a karta SD może być mała, i wolnego miejsca prawie nie mieć. Jako iż dysk podzieliłem na jedną partycje, która w tamtym momencie była zamontowana w trybie read-only aby zapobiec dalszej korupcji danych, musiałem znaleźć sposób którym mógłbym podmontować inny dysk, najlepiej nie podłączając go fizycznie do serwera..

sshfs to the rescue!

Szybko odpaliłem swój drugi serwer docelowo przeznaczony do backupów i stworzyłem w nim katalog do którego miałaby się skopiować reszta danych, a na pierwszym zatrzymałem extundelete przez Ctrl+Z, skopiowałem aktualną wartość katalogu /RECOVERED_FILES po SCP do katalogu na drugim serwerze, podmontowałem katalog z drugiego serwera komendą `sshfs reds@192.168.250.7:/mnt/a/backups/tmprecovery /RECOVERED_FILES/mnt/b` (/RECOVERED_FILES był już pusty). Po tej operacji trzymałem kciuki, że extundelete po prostu wróci do pracy i nie zauważy różnicy.. I nie myliłem się. Wszystko szło jak z płatka, dopóki nie wywalił mi się AmiWM (zdarza się to średnio raz na dwa miesiące, że też akurat musiał teraz..), co jednocześnie zamknęło mi terminal, w którym działało sobie extundelete (po co mi screen, żyjmy na krawędzi)..

Alleluja i Sukces!

Po ponownym uruchomieniu extundelete, odzyskało ono prawie wszystkie dane z wyjątkiem dwóch plików FLAC i paru JARów, które nie miały jakiejś ogromnej wartości. Ogólnie całą operację uznaje za sukces, bo mimo mojej małej wiedzy o odzyskiwaniu danych udało mi się tego dokonać.

Kończąc chciałbym również pokazać inny przypadek w którym nie udało mi się odzyskać prawie niczego - dosłownie następnego dnia po opisywanej w tym wpisie operacji, kiedy już dowiedziałem się czemu upload nie chce działać, wykonałem polecenie `rm -R *` będąc w / zamiast w /tmp, i mimo całkiem szybkiego odpięcia zasilania od serwera, nie odzyskałem nawet połowy plików konfiguracyjnych, przez co straciłem parę kolejnych dni.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.