Если команда завершилась успешно, резервное копирование выполнено правильно, за исключением аппаратного сбоя (который может также повлиять на любую проверку, которую вы можете выполнить). Позже он может стать неправильным, если оборудование неисправно, но большинство устройств хранения обнаруживает повреждение.
Здесь есть одна оговорка: в конвейере оболочка не сообщает об ошибках с левой стороны. (Это происходит из - за довольно общего сценария , когда правая рука не нужно читать все данные, например some_command | head
, и левая сторона умирает , потому что его выход уже не хотелось.) Таким образом , здесь ошибка чтения из dd
Would быть проигнорированным В 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
, включая монтирование и размонтирование файловой системы даже без внесения каких-либо изменений (что приведет к обновлению даты последнего монтирования во многих файловых системах), изменит контрольную сумму. Если вы хотите проверить целостность позже, запишите контрольную сумму диска во время резервного копирования где-нибудь.