решение1
GNU ddrescue
сначала быстро копирует хорошие блоки, используя большой размер блока, а затем опционально пытается восстановить больше данных, считывая меньшие блоки внутри блоков, которые не удалось выполнить в первом проходе. Для этого требуется файл журнала, который записывает, какие области все еще отсутствуют, и вывод должен быть отправлен в файл или на диск, который допускает произвольный доступ. Если запустить снова с имеющимся файлом журнала, ddrescue
будет предпринята попытка снова прочитать только отсутствующие части.
Курт Гарлофф dd_rescue
копирует данные в последовательном порядке, что позволяет захватывать их на stdout, например, для сжатия перед записью в файл. При обнаружении ошибки чтения dd_rescue
временно переключается на меньший размер блока, чтобы попытаться восстановить данные из проблемной области, прежде чем продолжить с оставшейся частью диска.