Если команда завершилась успешно, резервное копирование выполнено правильно, за исключением аппаратного сбоя (который может также повлиять на любую проверку, которую вы можете выполнить). Позже он может стать неправильным, если оборудование неисправно, но большинство устройств хранения обнаруживает повреждение.
Здесь есть одна оговорка: в конвейере оболочка не сообщает об ошибках с левой стороны. (Это происходит из - за довольно общего сценария , когда правая рука не нужно читать все данные, например some_command | head, и левая сторона умирает , потому что его выход уже не хотелось.) Таким образом , здесь ошибка чтения из ddWould быть проигнорированным В bash, установите pipefailопцию сообщать об ошибках из всех частей конвейера.
Кроме того, остерегайтесь, что dd bs=…игнорирует некоторые ошибки и ddчасто медленнее, чем альтернативы . Я рекомендую вообще не использовать dd: нет смысла просто копировать весь файл. Вопреки тому, что вы, возможно, где-то читали, ddэто не команда низкоуровневого доступа к диску со специальным свойством, в ней нет абсолютно никакой магии dd, а магия в /dev/hda.
shopt -s pipefail
set -e
</dev/hda buffer -s 64k -S 10m | ssh myuser@myhost "cat > ~/image.img"
Тем не менее, если вы хотите проверить резервную копию, лучше всего взять криптографическую контрольную сумму на каждой стороне и сравнить их. Например:
ssh myuser@myhost "sha1sum image.img" &
sudo sha1sum /dev/hda
Убедитесь, что две контрольные суммы идентичны.
Обратите внимание, что при этом проверяется, идентичны ли резервная копия и оригинал на момент проверки. Все, что вы изменяете /dev/hda, включая монтирование и размонтирование файловой системы даже без внесения каких-либо изменений (что приведет к обновлению даты последнего монтирования во многих файловых системах), изменит контрольную сумму. Если вы хотите проверить целостность позже, запишите контрольную сумму диска во время резервного копирования где-нибудь.