Как проверить целостность резервной копии дд?

11

Я только что сделал резервную копию всего жесткого диска (50 ГБ) sshчерез:

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

Какой сейчас лучший способ проверить целостность файла image.img, т.е. как убедиться, что все копируется правильно?

ученик
источник
Обычно, когда ты дд, это всегда идеально. Однако вы всегда можете запустить sha1sum для проверки хэшей sha1 оригинала и резервной копии.
Дарнир
2
« Обычно … это всегда идеально». Это напоминает мне цитату из «Обнаженного ружья»: «Врачи говорят, что у Нордберга шанс на жизнь 50/50, хотя вероятность этого составляет всего 10 процентов».
Sparhawk

Ответы:

10

Если команда завершилась успешно, резервное копирование выполнено правильно, за исключением аппаратного сбоя (который может также повлиять на любую проверку, которую вы можете выполнить). Позже он может стать неправильным, если оборудование неисправно, но большинство устройств хранения обнаруживает повреждение.

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

Жиль "ТАК - перестань быть злым"
источник
3
Обратите внимание , что если что - нибудь на /dev/hdaизменилось с тех пор резервное копирование было сделано хэши не совпадут.
Багамат
Преимущество проверки хеша состоит в том, что ложноотрицательные значения (ошибка, допущенная в записываемом изображении, случайно повторяется во время прогона хеша, так что ошибка остается незамеченной) являются астрономически незначительными. При наличии какого-либо аппаратного сбоя в подавляющем большинстве случаев это должно привести к неудачной проверке хеша. Получит ложноположительную неудачную проверку, если диск был заменен, как было отмечено.
Стивен Лу
@ StevenLu Нет, вероятность корреляции довольно высока, потому что аппаратные сбои не являются случайно случайными. В частности, ошибки ОЗУ (которые являются наиболее распространенными аппаратными сбоями, которые наблюдаются на типичных ПК) происходят в определенных битах.
Жиль "ТАК - перестань быть злым"
Ладно, наверное ... хэш как это с большим количеством соли, конечно, но ОП передавал по сети. Это просто ненадежно по своей природе, несмотря на TCP. Кроме того, вероятно, что мы не увидим точно такой же шаблон доступа (в физической памяти).
Стивен Лу
Новый связанный вопрос ищет разъяснения о первом предложении @Gilles.
Sparhawk
5

Как упоминали Дарнир и Джайлс, лучше всего запускать криптографические хеши сразу после резервного копирования, прежде чем что-либо будет изменено на вашем исходном диске. Однако, если вы использовали диск с тех пор, скорее всего, хэши не будут совпадать. Даже изменение одного байта на диске приведет к совершенно другому хешу.

Хотя это далеко не идеально, вы можете проверить изображение, смонтировав его. В системе, где находится образ диска, запустите следующее (создайте, /mnt/diskесли он не существует, или используйте альтернативное расположение):

mount -o loop image.img /mnt/disk

Затем вы можете просмотреть /mnt/diskи просмотреть все файлы. Проверьте хэши sha1 критических файлов внутри изображения на соответствие оригиналам, чтобы убедиться в их целостности.

bahamat
источник
-1

Используйте команду qemu-img

qemu-img check image.img
PolkaRon
источник