Утилита копирования файлов, например rsync, с обработкой ошибок, например ddrescue, для восстановления данных с жесткого диска с поврежденными секторами или аппаратным сбоем

Утилита копирования файлов, например rsync, с обработкой ошибок, например ddrescue, для восстановления данных с жесткого диска с поврежденными секторами или аппаратным сбоем

У меня есть жесткий диск с плохими блоками или секторами, которые не читаются из-за возможных механических проблем, таких как плохая головка диска, плохой двигатель или какая-то другая проблема, из-за которой жесткий диск считывает данные мучительно медленно и с большим количеством ошибок чтения. Я вижу среднюю скорость 50 КБ/сек, с некоторыми чтениями, падающими ниже 10 КБ/сек, и часто он вообще застревает на файле или секторе, обычно на довольно долгое время — от 2 до 10 минут или больше (при использовании rsync, до истечения времени ожидания).

Скорость, похоже, сильно варьируется, и он часто застревает на файлах, и когда он наконец «отлипает», кажется, что это длится только короткий всплеск, прежде чем он снова застревает. Диск также очень тихий, только иногда слышен звук копирования файлов (обычно, когда он застревает/отлипает на короткое время, прежде чем снова застрять). Таким образом, нет ни одного из тех злых звуков, которые обычно связаны со смертью жесткого диска. Кто-то предположил, что проблемы звучали так, как будто они могли быть вызваны невыровненной головкой диска, которая требует много повторных считываний, прежде чем он, наконец, успешно прочтет данные. Звучит правдоподобно, но я отвлекся...

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

Естественно, здесь вы, вероятно, скажете: «Вам следует использовать ddrescue!» Что ж, это все замечательно и замечательно, но у меня уже есть резервная копия большинства данных, поэтому я просто хочу восстановить определенные файлы. Я не собираюсь пытаться восстановить весь раздел блок за блоком, как это делает ddrescue. Меня интересует только спасение определенных файлов и каталогов.

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

Так я тут мечтаю, или есть что-то, что может это сделать? Или, может быть, даже способ заставить rsync или ddrescue работать таким образом? Я действительно открыт для любых решений, которые могут сработать, пока они позволяют мне выбирать, какие файлы я хочу «спасти», и могут пропускать файлы с ошибками при первоначальном запуске и пытаться/повторять эти ошибки позже.

До сих пор я пробовал rsync со следующими параметрами, но он часто застревает на файле дольше, чем тайм-аут, и в идеале я бы хотел, чтобы он просто переходил к следующему файлу и возвращался позже к файлам, на которых он застрял. Я не думаю, что это возможно. В любом случае, вот что я использовал до сих пор:

rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/

решение1

У меня 3TB Hitachi, который читает мучительно медленно, ddrescue будет работать на уровне файлов. Но не на уровне каталогов. Однако мне не удалось заставить работать опции ddrescue --timeout или --min-read-rate.

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

cat listoffiles | while read file
pipe while> do
pipe while> ls -l "$file"
pipe while> ddrescue -n -e1  "$file" /cc/RecoveredFiles/"$file" /cc/RecoveredFiles/"$file".llog
pipe while> date
done | tee -a  /cc/RecoveredFiles/ddrescue.log

решение2

Возможно, rsync изменился за годы, прошедшие с момента, когда был задан этот вопрос.

По моему опыту, rsyncв настоящее время он отлично справляется с копированием данных с умирающего жесткого диска, с

rsync -a <src> <dest>

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

rsync --versionотчеты rsync version 2.6.9 protocol version 29

Относительно других ответов:

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

решение3

Отличный вопрос, мне нравится уровень детализации. Для утилиты, которая хорошо подойдет для этого сценария, я бы рекомендовал попробовать Filescavenger отКветек. Он позволит выполнять избыточные повторные чтения в количестве 100+, но, что более важно, он имеет функцию создания образа диска, которая позволит вам сбросить все содержимое в образ, не тратя время на оценку файлов, а затем загрузить образ и просканировать его на наличие файлов. Утилита стоит 50 долларов для домашних пользователей, но вы можете загрузить ее и протестировать, чтобы увидеть, что можно восстановить из образа, прежде чем тратить деньги.

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

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

Крис

решение4

Вы хотитеПрогрессивный копир. Он нацелен на целые диски, но поскольку он принимает путь к файлу в качестве параметра, он должен работать и для отдельных файлов. Я не думаю, что он будет работать для каталогов — вам придется указывать каждый файл.

Связанный контент