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 są 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/