Czy istnieje narzędzie (lub jakaś magia powłoki), które pozwala mi porównać dwa urządzenia blokowe?
Szczegóły: Mam jedno duże (0,5 TB) urządzenie RAID, którego kopię zapasową wykonałem na nieco większym urządzeniu SATA przy użyciu dd. Na urządzeniu jest kilka partycji, jednak kopiuję z urządzenia „nadrzędnego”, a nie z węzłów urządzenia podzielonego na partycje (np. Kopiuję / dev / hda i nie / dev / hda1).
Chciałbym sprawdzić, czy kopia zapasowa jest dobra / poprawna.
Myślałem o uruchomieniu md5sum na każdym urządzeniu, ale to nie da mi dokładnego wyniku, ponieważ drugie urządzenie jest nieco większe niż pierwsze, a zatem dodatkowe bajty zmienią skrót.
źródło
info cmp
: "Polecenie 'cmp' porównuje dwa pliki, a jeśli się różnią, podaje pierwszy bajt i numer linii, gdzie się różnią."--bytes=LIMIT
opcji, ustawiającLIMIT
wartość bajtu mniejszego urządzenia, aby zatrzymać się na końcu mniejszego dysku (lub granicy partycji) bezcmp
wyjścia z niezerowym statusem.W zależności od zapełnienia dysków dyski mogą być najszybsze do zainstalowania systemów plików i wykonania
W przeciwnym razie powiedziałbym coś takiego:
Oczywiście dowiedz się, jak duże musisz zrobić
bs
icount
zatrzymać się na (lub tuż przed, jeśli jest to o wiele wygodniejsze) na końcu mniejszego dysku.Lub, dzięki komentarzowi enzotib, wygląda na to, że możesz użyć
cmp
, ale potrzebujesz-n
flagi, aby ograniczyć liczbę bajtów do krótszego z dwóch dysków.źródło
diff
podpowłoki nie będą czytać całego urządzenia przed jego zapisaniem.dd
zapisujebs
bajty natychmiast po przeczytaniu (lub przetwarzaniu, jeśli jest to określone, nie tutaj) i zapisuje dofifo
s, które blokują, dopóki nie zostaną odczytane.Szukasz oprogramowania do różnicowania binarnego
rdiff
jest przeznaczony do tworzenia kopii zapasowych i transmisji w sieci, spójrz na rdiff-backup i duplikowanie pod kątem tworzenia kopii zapasowych
xdelta3
to open-source binarny plik różnicowy, narzędzia do kompresji różnicowej, kompresja delta VCDIFF (RFC 3284).
bsdiff
też jest !! głodny pamięci, nie nadaje się do urządzeń blokowych.
źródło
Istnieje narzędzie o nazwie bsdiff , które robi dokładnie takie rzeczy. Robi to naprawdę szybko i jest w stanie wygenerować łatkę binarną, jeśli potrzebujesz.
Zobacz ten post, aby uzyskać wyjaśnienie.
źródło
bsdiff
praca jest bardziej złożona niż zwykłe porównywanie dwóch plików, więc wątpię, że może być szybsza niż prostszacmp
.Możesz porównać dwa urządzenia blokowe o różnych rozmiarach, używając
md5sum
tego:(zakładając, że mniejsze urządzenie to
/dev/sda
)źródło
Rozważ uruchomienie
fsck
kopii zapasowej. Może być konieczne wykonanie kilku sztuczek,losetup
aby ustawić urządzenia pętli zwrotnej na partycjach osadzonych w kopii zapasowej, ale jeśli podczas sprawdzania pliku stwierdzono, że struktura pliku jest spójna, prawdopodobnie same dane są dobre.Jeśli potrzebujesz pełnej sumy kontrolnej, możesz użyć urządzeń sprzężenia zwrotnego z przesunięciami, aby spojrzeć na wewnętrzne „partycje” kopii zapasowej i md5sum oddzielnie, ale wymuszone
fsck
mogą dać ci podstawowy pomysł znacznie szybciej niż bajt dla porównań bajtów lub obliczeń sumy kontrolnej.źródło