Як перевірити цілісність резервної копії DD?


11

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

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

Який зараз найкращий спосіб перевірити цілісність файлу image.img, тобто як перевірити, чи все скопійовано правильно?


Зазвичай, коли ви дд, це завжди ідеально. Однак ви завжди можете запустити sha1sum, щоб перевірити хеші х1 оригіналу та резервного копіювання.
darnir

2
" Зазвичай … це завжди ідеально". Це нагадує мені цитату з The Naked Gun: "Лікарі кажуть, що Нордберг має 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

Як згадували darnir & Giles, найкраще зробити це запустити криптографічні хеші одразу після створення резервної копії, перш ніж щось змінено на вихідному диску. Якщо ви вже використовували диск з тих пір, хеші, швидше за все, не збігаються. Навіть зміна одного байта на диску призведе до зовсім іншого хешу.

Хоча це набагато менше, ніж ідеально, ви можете помітити перевірку зображення, встановивши його. У системі, де є зображення диска, запустіть наступне (створіть, /mnt/diskякщо його не існує, або нам альтернативне розташування):

mount -o loop image.img /mnt/disk

Потім ви можете переглядати /mnt/diskта бачити всі файли. Перевірте ша1 хеші критичних файлів всередині зображення на оригіналах, щоб перевірити їх цілісність.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.