4

Я копирую с поврежденного жесткого диска (не SDD), где около 15% файлов может вызвать ошибку ввода-вывода. Я хочу только остальные 85% полных файлов и получить список поврежденных файлов. Как это сделать?

cp останавливается при первой ошибке чтения. scp/rsync жалуется и удаляет копию (требуется) и выходит (нежелательная). Невозможно продолжить после ошибки ввода-вывода, по крайней мере, не найденной, прочитав руководство по rsync (1).

Я гуглил долго, все посты о других нуждах:

  1. сообщая постеру, что ошибка ввода-вывода означает, что жесткий диск поврежден (я знаю это);
  2. указав постеру способ копирования хороших разделов одного файла, заполнения поврежденных данных нулями (у меня есть файлы по 100 КБ каждый размером менее 10 КБ, и поврежденные файлы мне не нужны, даже если отсутствует только один байт);
  3. рассказывает постеру, как многократно запускать rsync (по сети), чтобы бороться с плохим соединением и завершить копирование.
  4. рассказывает постеру, как изменить время ожидания по умолчанию, чтобы rsync старался читать файлы (я не хочу этого делать)
  5. говорит постеру запустить fsck, чтобы исправить ошибку файловой системы.

Спасибо за чтение списка нежелательных ответов!

Примечание. Это диск с физическим повреждением, подтвержденным соответствующими диагностическими средствами. Я также провел полный fsck.

2 ответа2

4

Пока кажется, что rsync --ignore-errors . Я не ожидал, что это сработает, потому что руководство говорит:

   --ignore-errors
          Tells --delete to go ahead and delete files even when there are I/O errors.

где я вообще не использовал опцию --delete .

1

Вы можете использовать GNU ddrescue для создания образа раздела, пропуская поврежденные сектора. Затем, когда вы монтируете образ только для чтения, вы либо получите быстрые ошибки файловой системы при доступе к определенным папкам, либо к некоторым файлам с обнуленными данными. Здесь и здесь есть несколько уроков для ddrescue.

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