Jak powiedzieć rsync, aby pomijał pliki na uszkodzonym bloku dysku twardego, zamiast utknąć podczas próby odczytania

13

Próbuję odzyskać pliki z dysku zawierającego błędy sprzętowe.

Dysk został naprawiony przez narzędzie dyskowe, ale powiedział mi, że dysk jest uszkodzony, więc muszę wykonać kopię zapasową wszystkiego, zanim nastąpi awaria.

Próbowałem więc skopiować pliki za pomocą wyszukiwarki, ale utknęły. Wypróbowałem inne narzędzia i utknęły, próbując skopiować pliki, gdy głowa uderzy w uszkodzony blok.

Więc próbowałem z rsync i wydaje się, że działa; ale to trwa wiecznie, kiedy uderzę w zły blok.

Zastanawiałem się więc, czy istnieje sposób, aby powiedzieć Rsync, aby nawet nie zawracał sobie głowy plikiem, jeśli trwa to zbyt długo? Albo mogę określić liczbę prób dla każdego pliku lub jak długo trzeba próbować dla każdego pliku?

Nie jestem pewien, jak długo ten dysk będzie trwał, więc chcę jak najszybciej usunąć wszystkie dane, podczas gdy nadal mogę go zamontować i zobaczyć na nim dane w wyszukiwarce.

Tego używam jako polecenia; proszę o poradę, jeśli istnieje jakiś sposób na ograniczenie próby na pliku, więc mogę poprosić rsync, aby spróbował odczytać uszkodzone bloki, ale unikam zbytniego utknięcia w określonym sektorze.

rsync -arv -e--ignore-errors --partial-dir=/Volumes/backup/partial /Volumes/work /Volumes/backup

Z góry dziękuję.

bębnić
źródło
3
Jeśli dysk ma uszkodzone sektory, lepiej spróbować zobrazować dysk za pomocą czegoś takiego dd_rescue, ma on zaawansowane funkcje radzenia sobie z uszkodzonymi sektorami.
jmreicha
Myślę, że @jmreicha ma dobry pomysł, ale w przyszłości, jeśli masz pytania techniczne dotyczące rsync, przyjaźni guru są dostępni na liście rsync: lists.samba.org/mailman/listinfo/rsync
Joe

Odpowiedzi:

10

Krótka odpowiedź: rsyncw tym przypadku nie jest to właściwe narzędzie: jego użycie może być nawet szkodliwe.
Użyj ddrescuezamiast tego (lepiej niż dd_rescue). Jest w stanie zrobić to, o co prosisz.


Jeśli dysk jest fizycznie uszkodzony, można go skamieniać przy każdej próbie naprawy.

To nie tylko pytanie o wykorzystanie twojego czasu , kiedy rsyncwydaje się wisieć na zawsze zbliżając się do uszkodzonego sektora. Problem polega na tym, że przy powtarzających się operacji niepowetowaną Niepowodzenie może dzieje, a wtedy nie będzie już w stanie do ratowania danych bez kosztownej wymiany części (zawsze, gdy będzie to jeszcze możliwe i nie będzie miał zamurowane swój HDD ).

W tym przypadku najbardziej bezpieczną procedurą, jaką znalazłem, jest

  1. Aby utworzyć surowy obraz na innym nieuszkodzonym dysku.
  2. Aby utworzyć kopię tego obrazu.
  3. Aby pracować nad kopią, naprawić system plików i uratować pliki .

Dlaczego kopia? Ponieważ jeśli coś zawiedzie w kroku naprawy systemu plików , zawsze możesz zacząć od nowa bez potrzeby ponownego dotykania oryginalnego uszkodzonego dysku twardego .

Sugeruję, aby użyć ddrescuedo wykonania surowego obrazu dysku, w tym defektów, ponieważ działa dobrze nawet w przypadku błędów odczytu.


Jak to zrobić ddrescue

Możesz używać ddrescuedokładnie tak, jak chcesz rsync, pomijając uszkodzone sektory bez ponawiania lub dzielenia ich, kopiując jak najwięcej danych.
To polecenie znajduje się poniżej (zamiast /dev/hda1ciebie umieścisz urządzenie):

ddrescue --no-split /dev/hda1 imagefile logfile

Po tym, jak zrobiłeś ten pierwszy fragment ( szybszy ), możesz spróbować go udoskonalić, próbując uzyskać dostęp 3 razy w przypadku błędu.

ddrescue --direct --max-retries=3 /dev/hda1 imagefile logfile 

Możesz nadal udoskonalać obraz, powtarzając ddrescuewywołania poleceń z innymi opcjami, próbując za każdym razem wyodrębnić więcej danych (zobacz referencje). Po zakończeniu możesz utworzyć kopię (jeśli masz całą potrzebną przestrzeń), a następnie naprawić system plików .

Pamiętaj, że surowy obraz będzie tak duży jak oryginalny dysk twardy .
W Internecie, na tej i innych stronach StackExchange można znaleźć wiele pytań i odpowiedzi na temat ratowania danych za pomocą ddrescuelub innych narzędzi.

Bibliografia:

Hastur
źródło
rzeczywiście dd_rescue to droga. Miałem to w mojej oryginalnej odpowiedzi, 2 lata temu; ale z jakichś powodów ktoś zdecydował, że nie mogę odpowiedzieć na własne pytanie :) Dzięki za odpowiedź i niesamowite szczegóły
rataplan
@newbiez: Zamiast tego miałem poważny problem z dyskiem z moim prawie zepsutym głównym dyskiem twardym ... więc spotkałem się ddrescuez przyjaciółmi :-) O twojej odpowiedzi tylko słowo: dziwne ... opublikuj je jeszcze raz i jeśli ktoś spróbuje zamknąć ponownie Głosuję tak, aby ponownie otworzyć (nigdy nie użyłem tej nowej mocy : D)
Hastur
1
Opcja --no-split została usunięta w nowszych wersjach programu ddrescue. Zamiast tego użyj --no-scrape. Zobacz lists.gnu.org/archive/html/bug-ddrescue/2015-09/msg00001.html
Grmpfhmbl