Narzędzie do kopiowania plików, takie jak rsync z obsługą błędów, jak ddrescue, do odzyskiwania danych z dysku twardego z uszkodzonymi sektorami lub awarią sprzętu [zamknięte]

12

Mam dysk twardy z wadliwymi blokami lub sektorami, które nie mogą odczytać z powodu potencjalnych problemów mechanicznych, takich jak wadliwa głowica dysku, zły silnik lub inny problem, który powoduje, że dysk twardy odczytuje dane niesamowicie wolno i dużo błędów odczytu. Widzę średnio 50 KB / s, a niektóre odczyty spadają poniżej 10 KB / s, i często często utkną w pliku lub sektorze, zwykle na dość długi czas - od 2 do 10 minut lub dłużej (kiedy używając rsync, zanim upłynie limit czasu).

Szybkość wydaje się zmieniać bardzo gwałtownie i bardzo mocno blokuje się na plikach, a kiedy w końcu zostaje „zablokowana”, wydaje się, że trwa tylko krótką serię, zanim znowu się zablokuje. Dysk jest również bardzo cichy, z od czasu do czasu odgłosami kopiowania plików (zwykle gdy utknie / odblokuje się na krótki czas, zanim ponownie utknie). Dlatego nie ma żadnego z tych złych dźwięków, które normalnie są związane ze śmiercią dysku twardego. Ktoś zasugerował, że problemy brzmiały tak, jakby mogły być spowodowane nieprawidłowo wyrównaną głowicą dysku, która wymaga wielu ponownych odczytów, zanim ostatecznie odczyta dane z powodzeniem. Brzmi wiarygodnie, ale dygresję ...

W każdym razie problem z rsync polega na tym, że nie ma on obsługi przyzwoitej obsługi błędów. Oczywiście nie był przeznaczony do odzyskiwania danych z uszkodzonych dysków twardych, ale wszystkie tak zwane narzędzia do „odzyskiwania danych”, które przeznaczone do takiego użytku, zwykle koncentrują się na odzyskiwaniu usuniętych plików lub pomieszanych partycji, a nie kopiowanie plików z umierających dysków twardych. Odzyskiwanie usuniętych plików nie jest oczywiście tym, czego potrzebuję, więc być może możesz zrozumieć moje rozczarowanie, że nie mogę jeszcze znaleźć tego, czego szukam.

Oczywiście w tym miejscu prawdopodobnie powiedziałbyś „Powinieneś użyć ddrescue!” Cóż, to wszystko w porządku i eleganckie, ale mam już kopię zapasową większości danych, więc chcę tylko odzyskać niektóre pliki. Nie martwię się próbą odzyskania pełnej partycji blok po bloku, tak jak robi to ddrescue. Interesuje mnie tylko uratowanie określonych plików i katalogów.

Idealnie, chciałbym, aby było jakieś połączenie między rsync i ddrescue: coś, co pozwala mi określić źródło i miejsce docelowe jako katalogi normalnych plików, takich jak rsync (zamiast dwóch pełnych partycji, jak wymaga ddrescue), z możliwością pomijania plików za pomocą błędy w pierwszym uruchomieniu, a następnie pozwala mi podjąć próbę odzyskania tych plików z błędami w późniejszym uruchomieniu (oczywiście z nieco zmienioną komendą), być może nawet oferując opcję określenia liczby prób ponownych prób ... podobnie jak jak ddrescue działa z blokami, tylko chcę narzędzie, które działa z określonymi plikami / katalogami, tak jak rsync.

Czy marzę tutaj, czy może istnieje coś, co może to zrobić? A może nawet sposób na rsync lub ddrescue w taki sposób? Jestem naprawdę otwarty na wszelkie rozwiązania, które mogą działać, o ile pozwalają mi wybrać pliki, które chcę „uratować”, i mogą pomijać pliki z błędami podczas pierwszego uruchomienia, a następnie spróbować ponownie / spróbować ponownie te błędy później.

Do tej pory wypróbowałem rsync z następującymi opcjami, ale często blokuje się on na pliku na czas dłuższy niż limit czasu i idealnie chciałbym po prostu przejść do następnego pliku i wrócić później do plików, które dostaje utknąć. Nie sądzę, żeby to było możliwe. W każdym razie oto, czego używałem do tej pory:

rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/
czysta fuzja
źródło

Odpowiedzi:

3

Mam Hitachi 3 TB, który odczytuje boleśnie wolno, ddrescue będzie działał na poziomie plików. Ale nie w katalogach. Jednak nie mogłem uruchomić opcji ddrescue - timeout lub --min-read-rate.

Zrobiłbyś to w skrypcie, aby uratować jeden plik na raz.

cat listoffiles | while read file
pipe while> do
pipe while> ls -l "$file"
pipe while> ddrescue -n -e1  "$file" /cc/RecoveredFiles/"$file" /cc/RecoveredFiles/"$file".llog
pipe while> date
done | tee -a  /cc/RecoveredFiles/ddrescue.log
qwop
źródło
3

Być może rsync zmienił się od lat, kiedy zadano to pytanie.

Z mojego doświadczenia wynika, że rsyncobecnie świetnie się spisuje kopiowanie rzeczy z umierającego dysku twardego

rsync -a <src> <dest>

Szybko przejdzie do przodu, jeśli wystąpi błąd, a po ponownym uruchomieniu wróci, aby spróbować ponownie tych plików.

rsync --version raporty rsync version 2.6.9 protocol version 29

W odniesieniu do innych odpowiedzi:

Wydaje się, że odpowiedzi z 2011 r. Promują narzędzia, które są komercyjnymi odpowiednikami ddrescue - nic nie wskazuje na to, że znają pliki. Podejrzany. Odpowiedź z 2013 roku jest interesująca.

Matthew Elvey
źródło
2

Świetne pytanie, uwielbiam poziom szczegółowości. W przypadku narzędzia, które działałoby dobrze w tym scenariuszu, poleciłbym wypróbowanie Filescavenger z Quetek . Pozwoli to na nadmierne ponowne czytanie w liczbie 100+, ale co ważniejsze, ma funkcję obrazowania dysku, która pozwoli ci zrzucić całą zawartość do obrazu bez marnowania czasu na próbę oceny plików, a następnie załadowanie obrazu i skanowanie go dla plików. Narzędzie to kosztuje 50 USD dla użytkowników domowych, ale można je pobrać i przetestować, aby zobaczyć, co można odzyskać z obrazu przed wydaniem pieniędzy.

Jeśli jest to użytkowanie profesjonalne, będzie cię to kosztować całkiem sporo, ale zyskasz znaczące funkcje, w tym obsługę logicznych i sprzętowych tablic rajdowych.

Jeśli to również się nie powiedzie, być może przekroczyłeś już poziom narzędzi do odzyskiwania oprogramowania. Jeśli jesteś i możesz uzasadnić koszt odzyskiwania laboratoryjnego, daj mi znać, w jakim kraju, stanie i mieście się znajdujesz. Mogę polecić jedno z naszych lub konkurencyjnych laboratoriów w pobliżu.

Chris

Chris - Armor-IT
źródło
1

Chcesz kopiarki progresywnej . Jest przeznaczony do robienia całych dysków, ale ponieważ jako parametr przyjmuje ścieżkę pliku, powinien również działać dla pojedynczych plików. Nie sądzę, żeby to zadziałało w przypadku katalogów - musisz określić każdy plik.

afrazier
źródło