Якщо команда завершилася успішно, тоді резервна копія виправлена, заборонивши апаратну помилку (що може однаково вплинути на будь-яку перевірку, яку ви можете виконати). Пізніше це може стати неправильним, якщо апаратне забезпечення несправне, але більшість апаратних засобів зберігання даних виявляє пошкодження.
Тут є одне застереження: в трубопроводі оболонка не повідомляє про помилки з лівого боку. (Це відбувається з - за досить загального сценарію , коли права рука не потрібно читати всі дані, наприклад 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
, включаючи встановлення та демонтажу файлової системи, навіть не вносячи жодних змін (які оновлюють останню дату монтування у багатьох файлових системах), змінить контрольну суму. Якщо ви хочете перевірити цілісність пізніше, запишіть контрольну суму диска під час резервного копіювання десь.