Jak sprawdzić integralność kopii zapasowej dd?


11

Właśnie wykonałem kopię zapasową całego dysku twardego (50 GB) za sshpośrednictwem:

dd if=/dev/hda | buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

Jaki jest teraz najlepszy sposób sprawdzenia integralności pliku image.img, tj. Jak sprawdzić, czy wszystko zostało poprawnie skopiowane?


Zwykle kiedy dd, zawsze jest idealny. Zawsze możesz jednak uruchomić sha1sum, aby sprawdzić skróty sha1 oryginału i kopii zapasowej.
darnir

2
Zwyklezawsze jest idealny.” Przypomina mi to cytat z The Naked Gun: „Lekarze twierdzą, że Nordberg ma szansę na życie 50/50, choć jest na to tylko 10 procent”.
Sparhawk

Odpowiedzi:


10

Jeśli polecenie zakończyło się powodzeniem, kopia zapasowa jest poprawna, z wyjątkiem błędu sprzętowego (który może również wpłynąć na każdą weryfikację, którą możesz wykonać). Może później stać się niepoprawny, jeśli sprzęt jest wadliwy, ale większość sprzętu pamięci masowej wykrywa uszkodzenie.

Jest tutaj jedno zastrzeżenie: w potoku powłoka nie zgłasza błędów z lewej strony. (Wynika to z dość wspólnego scenariusza, gdzie po prawej stronie nie trzeba czytać wszystkich danych, na przykład some_command | head, i matryce lewostronnej ponieważ jego produkcja nie jest już potrzebne.) Więc tutaj się błąd odczytu z ddBĘDZIE być ignorowanym. W bash ustaw pipefailopcję zgłaszania błędów ze wszystkich części potoku.

Uważaj też, aby dd bs=…ignorować niektóre błędy i ddczęsto jest wolniejsza niż alternatywy . Polecam ddw ogóle nie używać : kopiowanie całego pliku nie ma żadnych zalet. W przeciwieństwie do tego, co gdzieś przeczytałeś, ddnie jest to komenda niskiego poziomu dostępu do dysku ze specjalną właściwością, absolutnie nie ma magii dd, magia jest /dev/hda.

shopt -s pipefail
set -e
</dev/hda buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"

Niemniej jednak, jeśli chcesz sprawdzić kopię zapasową, najlepszym sposobem jest pobranie kryptograficznej sumy kontrolnej z każdej strony i porównanie ich. Na przykład:

ssh myuser@myhost "sha1sum image.img" &
sudo sha1sum /dev/hda

Sprawdź, czy dwie sumy kontrolne są identyczne.

Pamiętaj, że sprawdza to, czy kopia zapasowa i oryginał są identyczne w momencie sprawdzania. Wszystko, co zmienisz /dev/hda, w tym montowanie i odmontowywanie systemu plików, nawet bez dokonywania jakichkolwiek zmian (które zaktualizują datę ostatniego podłączenia w wielu systemach plików), zmieni sumę kontrolną. Jeśli chcesz później zweryfikować integralność, zanotuj gdzieś kopię zapasową dysku.


3
Pamiętaj, że jeśli cokolwiek się /dev/hdazmieniło od czasu utworzenia kopii zapasowej, skróty nie będą pasować.
bahamat

Zaletą kontroli skrótu jest to, że fałszywie ujemne (błąd popełniony podczas rejestrowania obrazu jest przypadkowo powtarzany podczas przebiegu skrótu, dzięki czemu błąd pozostaje niezauważony) jest drobiazgowo astronomiczny. Jeśli występuje jakaś usterka sprzętowa, powinna ona w przeważającej mierze skutkować nieudanym sprawdzaniem skrótu. Otrzyma wynik fałszywie dodatni, jeśli dysk został zmieniony, jak już wspomniano.
Steven Lu

@StevenLu Nie, szansa na korelację jest dość wysoka, ponieważ błędy sprzętowe nie są jednolicie losowe. W szczególności błędy pamięci RAM (które są najczęstszymi usterkami sprzętowymi, które można zaobserwować w typowych komputerach PC) występują w określonych bitach.
Gilles „SO- przestań być zły”

Okej, pewnie ... taki hasz z dużym ziarnem soli, jasne, ale OP przenosiło się przez sieć. To jest po prostu z natury niewiarygodne, pomimo TCP. Poza tym istnieje duże prawdopodobieństwo, że nie zobaczymy dokładnie tego samego wzorca dostępu (w pamięci fizycznej).
Steven Lu

Nowe powiązane pytanie szukające wyjaśnienia na temat pierwszego zdania @Gilles.
Sparhawk

5

Jak wspomniano darnir i Giles, najlepiej jest uruchomić kryptograficzne skróty natychmiast po utworzeniu kopii zapasowej, zanim cokolwiek zostanie zmienione na dysku źródłowym. Jeśli jednak używałeś dysku od tego czasu, skróty najprawdopodobniej się nie zgadzają. Nawet zmiana jednego bajtu na dysku spowoduje zupełnie inny skrót.

Chociaż jest znacznie mniej niż idealny, możesz sprawdzić obraz, montując go. W systemie, w którym znajduje się obraz dysku, uruchom następujące polecenie (utwórz, /mnt/diskjeśli nie istnieje lub w innym miejscu):

mount -o loop image.img /mnt/disk

Następnie możesz przeglądać /mnt/diski zobaczyć wszystkie pliki. Sprawdź skróty sha1 krytycznych plików w obrazie względem oryginałów, aby sprawdzić ich integralność.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.