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 dd
BĘDZIE być ignorowanym. W bash ustaw pipefail
opcję zgłaszania błędów ze wszystkich części potoku.
Uważaj też, aby dd bs=…
ignorować niektóre błędy i dd
często jest wolniejsza niż alternatywy . Polecam dd
w ogóle nie używać : kopiowanie całego pliku nie ma żadnych zalet. W przeciwieństwie do tego, co gdzieś przeczytałeś, dd
nie 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.