Я использую dd
для копирования данных со старого жесткого диска на новый. Я хочу быть уверен, что целостность данных в безопасности.
На этот ответ Жиль говорит
Если [dd] успешно завершен, резервное копирование выполнено правильно, исключая аппаратную ошибку…
Что это означает? Есть ли dd
какая-то встроенная проверка?
Если бы вместо этого я использовал rsync, я также запускаю второй проход --checksum
, чтобы проверить. Оправдана ли такая паранойя?
dd
verification
integrity
Sparhawk
источник
источник
rsync
, вероятно, будут самыми простыми.Ответы:
dd
или любое другое приложение не имеет «какой-то встроенной проверки» в том смысле, о котором вы, вероятно, думаете: оно не считывает данные с носителя данных для сравнения с тем, что было написано. Это работа операционной системы.На самом деле невозможно выполнить проверку на чтение оборудования из приложения. Это будет работать в некоторых сценариях, но в большинстве случаев это ничего не даст. Приложение может прочитать то, что оно только что написало, если оно пишет непосредственно на носитель , но это, как правило, считывает обратно из кеша в памяти, что не даст никакой полезной уверенности. В этом примере вы процитировать ,
dd
пишет в трубу, и в этом случае он не имеет никакого контроля над тем, что происходит с данными далее вниз по линии. В вашем примере rsync, второй проходrsync --checksum
Это бессмысленно: теоретически это может привести к ошибке, но на практике, если ошибка действительно случится, то второй проход, вероятно, не сообщит ничего плохого, поэтому вы тратите усилия на то, что на самом деле не дает полезной уверенности.Тем не менее, приложения действительно проверить , что происходит с данными, в том смысле , что они проверяют , что операционная система взяла на себя ответственность за данные. Все системные вызовы возвращают статус ошибки. Если системный вызов возвращает статус ошибки, приложение должно распространить эту ошибку пользователю, как правило, отображая сообщение об ошибке и возвращая ненулевой статус выхода.
Остерегайтесь,
dd
это исключение: в зависимости от параметров командной строкиdd
может игнорировать некоторые ошибки . Это крайне необычно:dd
это единственная общая команда с этим свойством. Используйтеcat
вместо этогоdd
, таким образом, вы не рискуете коррупцией, и это может быть быстрее .В цепочке копирования данных могут возникнуть два вида ошибок.
источник
dd if=/dev/sdc of=/dev/sdb bs=4M
, так что я понимаю, что проблемы игнорирования ошибок и скорости (более или менее, по сравнению сcat
) спорны. Вы говорите, чтобы просто проверить размер путем монтажа тогдаdf
?Нет,
dd
не делает явной проверки. Если вы хотите / нуждаетесь в криминалистически проверенной копии вашего диска или любой его части, используйтеdcfldd
улучшенную версию,dd
разработанную Лабораторией компьютерной криминалистики Министерства обороны США.источник
Единственный способ быть «уверенным» - это выполнить дополнительный этап чтения и сравнения (после удаления кэшей).
Кроме того,
dd
обнаруживает ошибки чтения и записи таким же образом, как и все другие программы ... это работает, если диски (и другие задействованные компоненты) сообщают об ошибках; для дисков, которые принимают данные без вывода сообщений без их записи, вам не повезло.Если вы не можете доверять своему оборудованию, чтобы быть надежным, все становится сложнее
источник
dd
обнаружения ошибок.dd
у вас будут серьезные проблемы с повреждением данных, но такие особые случаи не были частью вопроса.dd
. Реальное решение состоит в том, чтобы использовать что-либо, кроме того, чтоdd
тихое повреждение данных является специальностьюdd
.dd
игнорировать ошибки. Вы не можете точно обвинить программу в том, что она сделала именно то, что вы просили.dd
не игнорировать ошибки? И нет,conv=noerror
это не правильный ответ. Смотрите ответ frostschutz для примера. Я сделать винить дизайнdd
для изготовления , игнорируя ошибки режима по умолчанию, и один , который не может быть выключен , не зная его внутреннюю механику очень точно.Да, неисправное оборудование может вставлять биты случайных ошибок в данные с некоторой скоростью, как один бит на количество мегабайт, это возможно и иногда имеет место на практике.
Обычно я использую хэш md5 или sha1 для проверки целостности данных, перечитывая источник и место назначения, например:
Это предполагает, что данные намного больше, чем кеш файловой системы, в противном случае вам может понадобиться перезапустить систему для проверки фактических данных на носителе, а не содержимого кеша, или использовать для этого другую систему.
источник
От
man dd
:dd
проверяет совпадение размеров блоков ввода / вывода при каждом копировании блока. Если они этого не делают, он обрабатывает ошибку с предупреждением или фатальной ошибкой (переопределяется с помощьюnoerror
). Вот почемуdd
работает практически все время.Тем не менее, он не заменяет проверку целостности вашего диска вручную. Если информация для вас ценна, то да, ваша паранойя оправдана . Запустите ручную проверку, как только
dd
закончите.источник
dd
не работает практически все время: сbs
параметром игнорирует некоторые ошибки .