Więc co się dzieje, gdy dodanie conv=sync,noerror
robi różnicę podczas tworzenia kopii zapasowej całego dysku twardego w pliku obrazu? Czy conv=sync,noerror
jest wymagane przy wykonywaniu czynności kryminalistycznych? Jeśli tak, to dlaczego tak jest w przypadku linux fedora?
Edytować:
OK, więc jeśli wykonam dd bez conv=sync,noerror
i dd
napotka błąd odczytu podczas odczytu bloku (zmieńmy rozmiar 100M), dd po prostu pominie blok 100M i odczyta następny blok bez zapisywania czegoś ( dd conv=sync,noerror
zapisuje zera na 100M wyniku - więc co z tym przypadkiem ?)
A jeśli skróty oryginalnego dysku twardego i pliku wyjściowego są inne, jeśli są wykonywane bez conv=sync,noerror
? Czy to tylko wtedy, gdy wystąpił błąd odczytu?
Odpowiedzi:
conv=sync
nakazujedd
wstawienie każdego bloku w lewo wartościami null, aby jeśli z powodu błędu nie można odczytać pełnego bloku, zachowana jest pełna długość oryginalnych danych, nawet jeśli nie wszystkie dane mogą być zawarte w obrazie . w ten sposób wiesz przynajmniej, jak uszkodzone są dane, co może dostarczyć ci wskazówek kryminalistycznych, a jeśli nie możesz w ogóle zrobić zdjęcia z powodu złych bloków lub cokolwiek innego, nie możesz analizować żadnych danych. niektóre są lepsze niż żadne.conv=sync,noerror
jest konieczne, aby zapobiecdd
zatrzymaniu po błędzie i wykonaniu zrzutu.conv=sync
jest w dużej mierze bez znaczenia bez żadnych przeszkód.http://linuxcommand.org/man_pages/dd1.html
http://vlinux-freak.blogspot.com/2011/01/how-to-use-dd-command.html
źródło
dd conv=sync,noerror
(lubconv=noerror,sync
) powoduje uszkodzenie danych.W zależności od napotkanego błędu we / wy i zastosowanego rozmiaru bloku (większy niż rozmiar sektora fizycznego?) Adresy wejściowe i wyjściowe nie są właściwie zsynchronizowane, ale kończą się nieprawidłowymi przesunięciami, co czyni kopię bezużyteczną dla obrazów systemu plików i innych rzeczy, w których znaczenie mają przesunięcia.
Wiele miejsc zaleca korzystanie
conv=noerror,sync
z niewłaściwych dysków. Sam dawałem takie same rekomendacje. To zadziałało, kiedy jakiś czas temu musiałem odzyskać zły dysk.Testy sugerują jednak, że tak naprawdę nie jest to wcale wiarygodne.
Użyj
losetup
i,dmsetup
aby utworzyćA error B
urządzenie:Urządzenia z pętlą A, B wyglądają tak:
Więc to A, B z rosnącymi liczbami, które pomogą nam później zweryfikować przesunięcia.
Teraz, aby umieścić błąd odczytu pomiędzy tymi dwoma, dzięki uprzejmości mapera urządzeń Linux:
Ten przykład tworzy
AerrorB
jak w2000
sektorachA
, a następnie2*48
sektorów błędu, a następnie2000
sektorówB
.Aby zweryfikować:
Czyta do
A127999\n
, ponieważ każda linia ma 8 bajtów, co daje 1024 000 bajtów, czyli 2000 sektorów 512 bajtów. Wszystko wydaje się być w porządku ...Czy to się zmiksuje?
Wyniki:
Na podstawie samych rozmiarów plików można stwierdzić, że niektóre wielkości bloków są nieprawidłowe.
Sumy kontrolne:
dd
zgadza sięddrescue
tylko z rozmiarami bloków, które akurat są dostosowane do naszej strefy błędów (512
,4K
).Sprawdźmy surowe dane.
Chociaż same dane wydają się być obecne, oczywiście nie są zsynchronizowane; przesunięcia są całkowicie nie do zniesienia dla bs = 16K, 1M, 42,64K ... tylko te z przesunięciem
2088576
są poprawne, co można zweryfikować na oryginalnym urządzeniu.Czy to oczekiwane zachowanie
dd conv=noerror,sync
? Nie wiem, a dwie implementacje,dd
które miałem dostępne, nawet się ze sobą nie zgadzają. Rezultat jest bardzo bezużyteczny, jeśli użyjeszdd
wydajnego wyboru rozmiaru bloku.Powyższy wytworzono stosując
dd (coreutils) 8.25
,BusyBox v1.24.2
,GNU ddrescue 1.21
.źródło
ddrescue
zamiastdd
pracy z dyskami z uszkodzonymi sektorami?sync
argumentem informuje go utrzymać wyświetlamy prawidłową długość. Nie działa, jeśli użyjesz niewłaściwego rozmiaru bloku, więc po prostu nie rób tego.iflag=fullblock
wydaje się to ocalić. Chociażmd5sum
s obrazów wykonanych za pomocąiflag=fullblock
nadal się różni (oczywiście! Ponieważ liczba bajtów pominiętych z powodu błędu odczytu różni się - tzn. Różnią się ilości\0
s na obrazach), ale wyrównanie jest zapisywane ziflag=fullblock
:grep -a -b --only-matching B130000
zwraca2088576
wszystkie obrazy.