Я пытаюсь создать образ жесткого диска, используя dd, который выдает ошибки ввода-вывода. В результате я добавил параметр 'noerror', но я хотел бы отслеживать ошибки, чтобы попытаться восстановить.

Моя текущая попытка заключается в следующем:

sudo dd if=/dev/sdb bs=1M conv=sync,noerror of=output.img 2>&1 | tee output.log

При этом оба output.img и output.log создаются, но оба имеют размер 0 байтов, и при завершении dd нет вывода в эхо-запрос на терминал.

Я предпочел бы попробовать dd с опцией 'noerror' перед такими инструментами, как ddrescue, потому что я более знаком с dd.

Кроме того, этот диск содержит один NTFS-раздел, поэтому мы будем благодарны за указатели того, как восстановить NTFS-раздел с отсутствующими битами (диск имеет 500 ГБ, а первая ошибка, с которой я столкнулся, составляет около 30 ГБ).

Спасибо!

1 ответ1

1

Я настоятельно рекомендую вам использовать ddrescue - не избегайте инструмента, который подходит для работы, его запуск не сложен, и вы избавите себя от стресса.

Вызов прост:

Первый забег:

  • -p - предварительно выделить место
  • -b 4M - использовать большой размер сектора для скорости
ddrescue -p -b 4M ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}

Последующие запуски: (в отличие от dd , вы можете запустить его несколько раз, и он продолжит с того места, на котором остановился, обращаясь к файлу журнала)

  • -b 512 - использовать меньший размер сектора, чтобы попытаться заполнить пробелы
  • -r 10 - использовать несколько повторных попыток
ddrescue -b 512 -r 10 ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}

Разделы с ошибками чтения будут (по умолчанию) содержать нули, и вы получите файл журнала, подобный приведенному ниже:

#      pos        size  status
0x00000000  0x00014E00  +
0x00014E00  0x00000200  -
0x00015000  0x00005800  +
0x0001A800  0x00000200  -
0x0001AA00  0x00028000  +
0x00042A00  0x00000200  -
0x00042C00  0x00125400  +

Линии, отмеченные + являются областями, в которых нет ошибок, строки, отмеченные - это области с ошибками.


Вам может понадобиться рассмотреть некоторые из следующих параметров, в зависимости от характера ошибок чтения:

   -d, --direct
          use direct disc access for input file

   -K, --skip-size=<min>[,<max>]
          initial size to skip on read error [64 KiB]

   -M, --retrim
          mark all failed blocks as non-trimmed

   -O, --reopen-on-error
          reopen input file after every read error

   -r, --retry-passes=<n>
          exit after <n> retry passes (-1=infinity) [0]

   -R, --reverse
          reverse the direction of all passes

В прямой ответ на ваш вопрос:

  1. Вы, вероятно, столкнулись с проблемой буферизации ... вы, вероятно, увидите, что сразу появляется много строк, а потом ничего больше - посмотрите на unbuffer
  2. Возможно, sudo запрашивает пароль, но вы перенаправили подсказку ... так что ничего не происходит.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .