У меня есть жесткий диск с плохими блоками или секторами, которые не читаются из-за потенциальных механических проблем, таких как неисправная головка диска, неисправный двигатель или какая-то другая проблема, которая заставляет жесткий диск мучительно читать данные медленно и с большим количеством ошибок чтения. Я наблюдаю в среднем 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/