Как сказать rsync пропускать файлы на поврежденном блоке жесткого диска, вместо того, чтобы застрять, пытаясь его прочитать

13

Я пытаюсь восстановить файлы с диска, на котором есть аппаратные ошибки.

Диск был отремонтирован дисковой утилитой, но он сказал мне, что диск поврежден, поэтому мне нужно сделать резервную копию всего, прежде чем произойдет сбой.

Поэтому я попытался скопировать файлы через Finder, но он застрял. Пробовал другие утилиты и они застревают при попытке скопировать файлы, когда голова попадает в поврежденный блок.

Итак, я попытался с rsync, и это похоже на работу; но это навсегда, когда я попал в плохой блок.

Поэтому мне было интересно, есть ли способ заставить Rsync даже не беспокоиться о файле, если это занимает слишком много времени? Либо я могу указать количество попыток для каждого файла, или сколько времени нужно попробовать для каждого файла?

Честно говоря, я не уверен, как долго будет работать этот накопитель, поэтому я хочу получить все данные как можно скорее, хотя я все еще могу смонтировать его и увидеть данные в нем в Finder.

Это то, что я использую в качестве команды; Пожалуйста, посоветуйте, если есть какой-либо способ уменьшить попытку файла, чтобы я мог использовать rsync, чтобы попытаться прочитать поврежденные блоки, но избегать слишком долгого застрять в определенном секторе.

rsync -arv -e--ignore-errors --partial-dir=/Volumes/backup/partial /Volumes/work /Volumes/backup

Заранее спасибо.

барабанный бой
источник
3
Если на диске есть поврежденные сектора, лучше попытаться создать образ диска, например dd_rescue, он имеет расширенные функции для работы с поврежденными секторами.
jmreicha
Я думаю, что у @jmreicha правильная идея, но в будущем, если у вас возникнут технические вопросы по rsync, в списке rsync появятся
Джо,

Ответы:

10

Краткий ответ: rsyncэто не тот инструмент, который следует использовать в этом случае: его использование может быть даже вредным.
Используйте ddrescueвместо (лучше чем dd_rescue). Он может делать то, что вы просите.


Если диск физически поврежден, есть возможность кирпича его с любой попыткой отремонтировать его.

Это не только вопрос об использовании вашего времени , когда rsyncкажется, что оно висит навсегда, приближаясь к поврежденному сектору. Проблема в том, что при повторных операциях может произойти непоправимый сбой, и тогда вы больше не сможете спасти свои данные без замены дорогостоящих деталей (всегда, если это все еще возможно, и вы не заложили свой жесткий диск ).

В этом случае самая безопасная процедура, которую я нашел, это

  1. Создать сырой образ на другом не битом диске.
  2. Чтобы создать копию этого изображения.
  3. Для того, чтобы работать на копии , чтобы исправить файловую систему и спасти файлы .

Почему копия? Потому что, если что-то не получается на этапе исправления файловой системы, вы всегда можете начать заново без необходимости снова касаться поврежденного жесткого диска .

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


Как это сделать с ddrescue

Вы можете использовать ddrescueименно то, что хотели бы rsync, пропуская поврежденные сектора, не повторяя и не разбивая их, копируя как можно больше данных.
Эта команда здесь ниже (вместо /dev/hda1вас будет помещено ваше устройство):

ddrescue --no-split /dev/hda1 imagefile logfile

После того, как вы сделали этот первый проход ( более быстрый ), вы можете попытаться уточнить его, пытаясь получить доступ 3 раза в случае ошибки.

ddrescue --direct --max-retries=3 /dev/hda1 imagefile logfile 

Вы можете продолжить улучшать изображение, повторяя ddrescueвызовы команд с другими параметрами, пытаясь каждый раз извлекать больше данных (см. Ссылки). Когда вы закончите, вы можете создать копию (если у вас есть все необходимое пространство), а затем исправить файловую систему .

Обратите внимание, что исходное изображение будет таким же большим, как исходный жесткий диск .
Вы можете найти в Интернете, на этом и на других сайтах StackExchange множество вопросов и ответов о том, как спасти данные с помощью ddrescueдругих инструментов.

Ссылки:

Hastur
источник
действительно, путь dd_rescue - это путь. У меня было это в моем оригинальном ответе, 2 года назад; но по некоторым причинам кто-то решил, что я не могу ответить на свой вопрос :) Спасибо за ответ и потрясающие детали
rataplan
@newbiez: Вместо этого у меня была серьезная проблема с диском на моем почти кирпичном главном жестком диске ... поэтому я встретился ddrescueи его друзья :-) О вашем ответе только слово: странно ... опубликуйте его снова, и если кто-то попытается закрыть снова Я буду голосовать «да», чтобы открыть (я никогда не использовал эту новую власть : D)
Хастур
1
Опция --no-split была удалена в более новых версиях ddrescue. Вместо этого используйте --no-scrape. См. Lists.gnu.org/archive/html/bug-ddrescue/2015-09/msg00001.html
Grmpfhmbl