kickmanMember Автор темы Куратор темы 411/645 ответов 17 лет на iXBT, с декабря 2007 Чаще пишет в "Накопители" (76%) Россия, Родовое Поместье
|
k kickman Member Автор темыКуратор темы
В вопросах восстановления информации Помощь в восстановлении информации с HDD (часть 5) часто может помочь - и обратившимся к ней ПОМОГЛА - ddrescue, но поскольку программа малоизвестная, а эффективно работает в Linux (что тоже малознакомо большинству пользователей), создана данная тема, для помощи в "вытягивании"/считывании/копировании данных с повреждённых носителей. Существует версия ddrescue для Linux и для Windows (например, статья по теме: habrahabr.ru/post/213337/) Описание работы в среде Windows: сообщение #177Вся сборка ddrescue для Windows (обновлено 16.07.2018) со вспомогательными утилитами, нужными для запуска библиотеками, с документацией тут в архиве: Яндекс-диск, Google-drive, состав: ddrescue - копирование с повреждённого или годного источника в другое место, с ведением лога ddrescuelog - манипулирование логами ddrescue hdparm - управление диском на низком уровне (например, отключение кэша для дочитывания битых мест) ddrescueview - визуальный просмотр логов ddrescue в виде карты скопированного, пропущенного ddru_ntfsfindbad - отчёт о повреждениях файлов (строится по разделу с годной MFT и по логу ddrescue) ddru_ntfsbitmap - получение размещения MFT раздела и карты кластеров, занятых файлами (пока не работает) И пара документов на русском языке - перевод оригинальной инструкции и домашней странички сайта. Нужно добавить ещё smartmontools для установки таймингов чтения и отключения SMART. Также имеется исходный код, который можно скомпилировать на любой платформе. UPD 2017-08-03: аппаратное дополнение для автоматизации, от форумчанина Дмитирий_З: Сообщение #205UPD 2020-05-08 ( про имена дисков): Правильно оперировать именами дисков таком формате:/dev/disk/by-id/ata-%model%_%serialnumber% - ссылка сообщение #358UPD 2023-11-29 - дополнено про имена дисков: сообщение #705UPD 2024-01-09 - статья на хабре, скрипт и аппаратное решение для автоматизации: сообщение #748Назначение программы - копирование данных с физически видимого в ОС носителя, у которого имеются физические проблемы (дефектные сектора), не позволяющие ОС увидеть разделы и данные. Перед запуском прочитайте инструкцию - ГЛАВА 3 - БЕЗОПАСНОЕ использование.И внизу данного сообщения краткую инструкцию по запуску. Очень близкий по смыслу к оригиналу перевод инструкции к ddrescue:Руководство для GNU ddrescue (версия 1.22-pre3, 29 июня 2016). Часть 5 - Запуск ddrescue (с описанием всех параметров) - переведена 7.11.2016 - ввиду большого объёма выложена отдельным сообщением: Сообщение #23Часть 11. Режим заполнения. Сообщение #85Это руководство – свободный документ: можете без ограничений копировать, распространять и изменять его. Ссылка на нынешнюю наиболее (но не абсолютно) полную версию: Яндекс-диск 1. ВступлениеGNU ddrescue – это инструмент восстановления данных. Копирует данные из одного файла или блочного устройства (жёсткий диск, оптический диск, твёрдотельный носитель) на другое, а в случае ошибок чтения - сначала считывает хорошие части. Основные действия в программе автоматизированы. То есть, от Вас не требуется ждать до появления ошибки, останавливать программу, перезапускать копирование с новой позиции и т.п. При использовании возможности mapfile (журналирования), данные считываются очень эффективно (только требуемые участки). В любой момент можно прервать восстановление – и продолжить позже с того же или с любого другого места. Mapfile (журнал) – важная часть эффективности ddrescue. Рекомендуется обязательно использовать журнал (кроме случаев, когда Вы точно знаете, что сможете работать без него). Ddrescue, найдя нечитаемый сектор на входе, не пишет нули на выходе, и без запроса не сбрасывает содержимое выходного файла. Поэтому, каждый раз, при запуске на одном и том же выходном файле, программа старается заполнить пропущенные места, без стирания того, что уже скопировано. Автоматическое объединение резервных копий. Если есть две или больше повреждённые копии одного файла, (на CD, DVD и т.п.) - и запустить ddrescue на них по очереди с указанием одного и того же выходного файла, то, возможно, удастся получить целостный файл, без ошибок - потому что вероятность повреждения одних и тех же участков во всех копиях очень низка (если ошибки размещены случайным образом). С использованием mapfile (журнала) программа будет считывать только не скопированные ранее блоки из второй и следующих копий источника. Ddrescue рекомендует сжимать резервные копии с помощью lzip, потому что формат lzip предназначен для долговременного архивирования и предоставляет возможности восстановления данных, отлично дополняющие возможности ddrescue. (Ddrescue заполняет нечитаемые секторы данными из других копий, а lziprecover исправляет повреждённые секторы с данными других копий). В случае повреждения файла или носителя, сочетание ddrescue + lziprecover является наилучшим для восстановления данных из множества повреждённых копий. См. пример-lziprecover. Ddrescue требуется произвольный доступ для работы с носителем, поэтому работа с ленточными накопителями затруднительна или невозможна. Ddrescue может использовать для чтения источника прямой доступ, в обход кэша ядра - если Ваша система поддерживает такую возможность. У ddrescue есть «режим заполнения», в котором можно выборочно перезаписывать части выходного файла. Несколько интересных применений: стирание данных, выявление и пометка плохих участков, а в некоторых случаях, «восстановление» «плохих» секторов. Одна из сильных сторон ddrescue - безразличие к интерфейсу передачи данных, поэтому программа может работать с любым носителем, который поддерживает Ваше ядро: P-ATA, S-ATA, SCSI, старые MFM-диски, дискеты, твёрдотельные носители, карты памяти (например SD). 2. Основные понятия(термины)Блок Любое количество данных. Описывается адресом начала и размером. Адрес начала – это минимальный адрес в блоке. Адрес конца блока – это адрес его начала + размер. Кластер Группа последовательных секторов, считываемых или записываемых за одну операцию. Устройство Часть аппаратуры, содержащая данные: жёсткие диски, оптические приводы, USB-носители. /dev/hda, /dev/sdb – это имена устройств. Файл Файлы – поименованные единицы данных, хранимые Вашей операционной системой, с возможностью считывания по известному имени файла. Доступ к устройствам и разделам происходит по ассоциированным с ними файловым именам. Раздел Каждая часть, на которые распределён объём устройства. Обычно раздел содержит файловую систему. /dev/hda1, /dev/sdb3 – имена разделов. Восстановимые форматы носителей Поскольку ddrescue использует стандартные функции чтения данных с устройства, то это возможно только для тех форматов устройств, которые можно монтировать. CD-ROM и DVD-диски считывать можно, а AudioCD нет. “VideoCD” – возможно. http://ru.wikipedia.org/wiki/Video_CDРабочая область Блок или набор блоков, над которыми работает программа (выполняет их копирование, перечисление и т.п. действия). Можно задать с помощью параметров '--input-position', '--size' и '--domain-mapfile' в любых сочетаниях. По умолчанию используется область, равная полному размеру источника или файла журнала (mapfile). Если ddrescue не может определить размер источника, то рабочая область по умолчанию принимает максимально возможный размер блока (2^63 -1 байт, или 8 эксабайт минус 1 байт). Ddrescue никогда не станет читать данные за пределами заданной рабочей области, кроме запросов на прямой доступ к диску, не выровненных по границам секторов (см. Прямой доступ). А если станет – сообщайте об ошибке. Объём скопированных данных, число ошибок и т.п. сведения, отображаемые программой, могут меняться, даже стать =0, если Вы ограничили заданную рабочую область. Спокойствие! Ничего не пропало, просто часть сведений выходит за пределы заданной рабочей области. На полной увидите всё. Сектор Аппаратный блок данных. Минимально доступный объём данных при доступе к устройству. 3. Безопасное использование ddrescueDdrescue является одним из мощнейших инструментов. Чтобы применять её безопасно, следует понимать, что она делает, и ещё понимать кое-что о системах, с которыми она работает. Никогда не пытайтесь копировать раздел, смонтированный в режиме чтения-записи, т.к. результат может оказаться безполезным. Наилучший вариант копирования устройства или раздела – когда они не примонтированы даже в режиме «только для чтения». Никогда не пытайтесь восстанавливать файловую систему на устройстве с ошибками ввода-вывода, т.к. это может привести к ещё бОльшим потерям. Если в качестве назначения используется целое устройство или любой его раздел, то там будут перезаписаны все имеющиеся данные. Некоторые системы могут менять имена устройств при перезагрузках (например, системы на основе udev). После перезагрузки системы или обновления списка устройств хранения данных проверяйте имена устройств перед каждым новым запуском ddrescue. Если копирование прервано, то перед перезагрузкой следует скрыть от ОС частично скопированные разделы, чтобы ОС не смогла их увидеть, примонтировать и автоматически применить «исправления». 4. АлгоритмGNU ddrescue не является производной от dd, и ни в какой степени не связана с ней – кроме, разве что, возможности копировать данные с одного устройства на другое. Ключевое отличие в том, что ddrescue использует разветвлённый алгоритм для копирования с повреждённых носителей, причиняя им как можно меньше вреда. Ddrescue эффективно обрабатывает состояние текущего процесса копирования и старается сначала считывать хорошие части, откладывая чтение областей с задержками и ошибками. Это увеличивает объём данных, которые в итоге можно скопировать с повреждённого устройства. Стандартную утилиту dd можно использовать для копирования данных с повреждённого носителя, но она читает данные последовательно, что может привести к износу/повреждению носителя и вообще не дать результата, если ошибки находятся в самом начале. Другие программы считывают данные последовательно, но при ошибках чтения уменьшают размеры читаемых блоков. Это не есть хорошо, так как приводит к тратам времени на чтение областей с ошибками и задержками, к повреждению поверхности, головок и механики, вместо того, чтобы как можно скорее пропустить эти участки. Такое поведение снижает шансы на успешное копирование данных, оставшихся в хороших областях. Алгоритм работы ddrescue следующий (можно прервать процесс в любой момент, нажав CTRL+C, но имейте в виду, что повреждённый носитель может надолго задержать отмену и выход, пока ядро не сообщит об ошибке): 1) (Необязательно) считывает mapfile (журнал), описывающий состояние остановленного процесса или multi-part rescue. Если журнал не указан, пуст или отсутствует, вся рабочая область будет помечена как непроверенная. 2) (Первая фаза; Копирование). Чтение всех непроверенных областей исходного файла, пометка несчитанных из-за ошибок блоков как “non-trimmed” и их пропуск. Пропуск медленных областей. (Пропущенные области будут прочитаны позже, в 4 дополнительных прохода (до зачистки), меняя направление чтения каждого прохода, до конца рабочей области.) Второй проход разграничивает блоки, пропущенные первым проходом. Третий и четвёртый проходы читают блоки, пропущенные из-за медленного чтения (если таковые были) в том же направлении, в котором блоки были пропущены. Эти три прохода пропускают остаток блока при первой же ошибке. Последний проход – зачистка, проходит без пропусков. Цель многопроходности – сначала выделить большие ошибочные зоны для считывания в первую очередь хороших, ограничить размер журнала и предоставить адреса точек для уточнения границ ошибок (trimming). Только непроверенные области считываются большими блоками. Trimming (уточнение границ), scraping (вычитывание) и retrying (перечитывание) выполняются по одному сектору. Каждый сектор считывается максимум 2 раза; сначала в этой фазе, как часть большого блока, а повторно в одной из следующих фаз – чтение одного сектора. 3) (Вторая фаза; Уточнение границ) Происходит в один проход. Для каждого необрезанного блока читает по одному сектору от начала вперёд до первой ошибки (bad sector). Затем читает по одному сектору обратно от конца блока до нахождения ошибки (bad sector). При нахождении плохих секторов помечает их как плохие, а всю область между ними как невычитанную, не пытаясь её читать. Если на границе уже находится bad sector, то участок признаётся уже уточнённым, далее не уточняется. 4) (Третья фаза; Вычитывание) Вычитывает все данные, не прочитанные при копировании или уточнении. Происходит в один проход. Каждый невычитанный блок читается вперёд, по одному сектору. Все найденные ошибки будут помечены как плохие сектора (bad sector). 5) (Чётвёртая фаза; Повторные попытки) Необязательно пробует заново считывать плохие секторы до достижения заданного числа повторов чтения. Направление чтения меняется при каждом следующем проходе. Каждый плохой сектор программа пробует читать только один раз за проход. Ddrescue не знает, сектор необратимо испорчен, или же он может быть случайно считан с нескольких попыток. 6) Необязательно ведёт журнал (mapfile) для использования позже. Общий размер ошибок (errsize) – это сумма размеров всех блоков с плохими секторами. Увеличивается в фазах уточнения границ и вычитывания, и может уменьшаться в фазе повторных попыток. Не уточнённые и не вычитанные блоки ошибками не считаются. Ddrescue перечитывает блоки с ошибками, и успешно считанные данные могут разделить ошибочные блоки на меньшие части, уменьшая общий размер ошибок, но увеличивая их число. «Оставшееся время» вычисляется по средней за последние 30 секунд скорости и не учитывает, что некоторые участки могут быть исключены из работы (например, параметром ‘--no-trim’), а некоторые области, возможно, невосстановимы. Поэтому оценка может быть очень неточной, значительно меняться во время работы и быть больше нуля в конце работы. В частности, может показать несколько секунд в начале работы и вырасти до часов и дней в следующих проходах. Такова природа ddrescue; хорошие части обычно считываются быстро, а остаток может занять долгое время. Журнал периодически сохраняется на диске, сохраняется он и при завершении или прерывании работы ddrescue. Поэтому при сбоях можно продолжить копирование, считав минимум лишнего. По умолчанию, интервал сохранения меняется от 30 секунд до 5 минут в зависимости от размера файла журнала (большие сохраняются реже), но может быть задан прямо параметром '--mapfile-interval'. Также, один и тот же журнал можно использовать для нескольких команд копирования разных участков с одного источника и для многих попыток копирования с разных участков. Смотрите вот этот пример: Сначала прочитать наиболее важную область диска. ddrescue -i0 -s50MiB /dev/hdc hdimage mapfile ddrescue -i0 -s1MiB -d -r3 /dev/hdc hdimage mapfile Затем прочитать некоторые ключевые участки диска. ddrescue -i30GiB -s10GiB /dev/hdc hdimage mapfile ddrescue -i230GiB -s5GiB /dev/hdc hdimage mapfile И прочитать остальное (не читает заново всё то, что уже прочитано). ddrescue /dev/hdc hdimage mapfile ddrescue -d -r3 /dev/hdc hdimage mapfile Часть 5 - Запуск ddrescue (с описанием всех параметров) - переведена 7.11.2016 - ввиду большого объёма выложена отдельным сообщением: Сообщение #236 Mapfile structure - Структура файла журнала - не переведено - КРАТКО смысл:# Комментарии - эти строки не значимы для программы, начинаются с "#" Первая значимая строка: адрес_текущего_блока состояние_работы номер_прохода Коды состояний работы: Символ Значение '?' копирование того, что ранее не пробовали читать '*' уточнение границ блоков '/' посекторное вычитывание внутри блоков, у которых начало и конец ограничены плохими секторами '-' повторное чтение плохих секторов 'F' заполнение указанных блоков 'G' создание приблизительного файла журнала '+' успешно завершённый блок
Строки журнала (кроме первой значимой) строятся так: адрес_начала_блока длина_блока код_состояния Коды состояний блоков: Символ Значение '?' блок, который не пробовали читать (non-tried) '*' непрочитанный из-за ошибки блок, границы не уточнены (non-trimmed) '/' непрочитанный из-за ошибки блок, не вычитано читаемое (non-scraped) '-' непрочитанный из-за ошибки блок, нечитаемые секторы (bad-sector(s)) '+' успешно скопированный блок 7 Сохранение файла журнала при затруднениях/проблемах - не переведено - КРАТКО смыслЖурнал нужен для продолжения копирования, а иногда требуется несколько дней для считывания с повреждённого носителя, поэтому ВАЖНО СОХРАНЯТЬ и ОБЕРЕГАТЬ  журнал, например, от недостатка свободного места на диске, куда программа его пишет (его=журнал). При невозможности записи файла журнала программа выдаст сообщение с просьбой устранить проблемы и нажать ENTER. Можно попробовать выполнить аварийное сохранение, нажав E, затем ENTER. При невозможности записи программа повторно выдаст предупреждение. 8. Копирование с оптических носителей (CD, DVD, с примерами!!!)Ddrescue может быть лучше, чем dd при копировании с записываемых оптических дисков, потому что два сектора lead-out в конце некоторых из них могут вызвать ошибку чтения, которая помешает dd прочитать ВСЮ ЦЕЛИКОМ последнюю запись, потенциально приводя к потере данных. Также dd может создать образ размером больше оригинального при указании 'sync' conversion и размера блока больше, чем размер сектора.
В некоторых случаях, специализированная программа наподобие dvdisaster может оказаться лучше, чем ddrescue – для восстановления данных с CD-ROM – так как dvdisaster может читать и анализировать CD-секторы в «сыром» режиме, чего не умеет делать ddrescue.
Записываемые диски CD и DVD хранят информацию ограниченное время (обычно несколько лет). По истечении этого времени развиваются процессы искажения данных (растущие ошибки чтения), от наружного края к внутреннему. Сделайте хотя бы 2 (а то и больше) копии каждого из записанных важных дисков, чтобы потом иметь возможность восстановить их с помощью ddrescue.
Если есть только одна копия CD-ROM/DVD (с ошибками чтения), но есть доступ к нескольким разным приводам, то шансы прочитать плохие секторы увеличиваются, т.к. один привод может иметь проблемы при чтении сектора, а другой может и «выжать» из него данные, в зависимости от частоты работы лазера и чувствительности лазерного приёмника, принимающего отражённый от диска луч.
Пример 1. Копирование с диска, примонтированного как /dev/cdrom
ddrescue -n -b2048 /dev/cdrom cdimage mapfile ddrescue -d -r1 -b2048 /dev/cdrom cdimage mapfile (если размер ошибок будет =0, то файл cdimage содержит полный образ исходного диска CD-ROM – и можно записать его на новый пустой диск)
Пример 2. Копирование диска в /dev/cdrom с двух копий
ddrescue -n -b2048 /dev/cdrom cdimage mapfile ddrescue -d -b2048 /dev/cdrom cdimage mapfile (теперь вставить вторую копию в привод) ddrescue -d -r1 -b2048 /dev/cdrom cdimage mapfile (если размер ошибок будет =0, то файл cdimage содержит полный образ исходного диска CD-ROM – и можно записать его на новый пустой диск)
Пример 3. Копирование диска в /dev/cdrom на двух разных компьютерах с сохранением образа на USB-устройстве, примонтированном как /mnt/mem
ddrescue -n -b2048 /dev/cdrom /mnt/mem/cdimage /mnt/mem/mapfile ddrescue -d -r1 -b2048 /dev/cdrom /mnt/mem/cdimage /mnt/mem/mapfile (размонтировать USB-устройство и перенести его и диск на второй компьютер) ddrescue -d -r1 -b2048 /dev/cdrom /mnt/mem/cdimage /mnt/mem/mapfile (если размер ошибок будет =0, то файл cdimage содержит полный образ исходного диска CD-ROM – и можно записать его на новый пустой диск)
Пример 4. Объединение частично скопированных образов 3 одинаковых DVD дисков, используя журналы для задания рабочих областей
ddrescue -m mapfile1 dvdimage1 dvdimage mapfile ddrescue -m mapfile2 dvdimage2 dvdimage mapfile ddrescue -m mapfile3 dvdimage3 dvdimage mapfile (если размер ошибок будет =0, то файл dvdimage содержит полный образ исходного DVD-диска – и можно записать его на новый пустой DVD-диск)
Пример 5. Копирование сжатой с помощью lzip резервной копии с двух копий CD, с проверкой ошибок и объединением копий (См. руководство по lziprecover для получения более подробных сведений)
ddrescue -d -r1 -b2048 /dev/cdrom cdimage1 mapfile1 mount -t iso9660 -o loop,ro cdimage1 /mnt/cdimage cp /mnt/cdimage/backup.tar.lz rescued1.tar.lz umount /mnt/cdimage (вставить в привод диск со второй копией) ddrescue -d -r1 -b2048 /dev/cdrom cdimage2 mapfile2 mount -t iso9660 -o loop,ro cdimage2 /mnt/cdimage cp /mnt/cdimage/backup.tar.lz rescued2.tar.lz umount /mnt/cdimage lziprecover -m -v -o backup.tar.lz rescued1.tar.lz rescued2.tar.lz Input files merged successfully. lziprecover -tv backup.tar.lz backup.tar.lz: ok 9. Краткое руководство с примерамиЭто руководство для тех, кто уже умеет использовать dd. Если Вам не знакома dd, лучше сначала поискать [в интернете] вводные материалы по dd и GNU ddrescue. Повреждённый носитель часто с течением времени увеличивает число ошибок чтения при работе с ним. Из-за этого после того, как замечена первая ошибка, следует как можно скорее скопировать данные. Будьте прилежны, ибо при каждом включении повреждённого диска и чтении с него данных, это включение и работа могут стать для него последними. Следует сделать копию проблемного носителя с помощью ddrescue, а затем уже работать с этой копией (для логического восстановления). Если данные очень важные, то сделайте ещё и вторую копию с первой копии. Если что-то пойдёт «не так», можно восстановиться из первой копии и пробовать ещё. При попытке восстановления целого раздела, сначала исправьте полученную копию раздела подходящей для его ФС программой, затем примонтируйте исправленную копию и пробуйте восстанавливать с неё файлы. А если исходный носитель настолько повреждён, что файловая система скопированного раздела не может быть восстановлена или примонтирована, придётся смотреть данные в шестнадцатеричном или дисковом редакторе ( http://dmde.ru) и вручную восстанавливать нужное, или пробовать использовать программы типа photorec. Если повреждена таблица разделов, можно пробовать скопировать весь диск, затем восстановить таблицу разделов и сами разделы. Если исходный носитель отсутствует как диск в списке устройств системы (/dev/ для Linux; “Диспетчер устройств – Диски” для Windows), то скопировать с него ничего нельзя. По крайней мере, с помощью ddrescue. Для примеров восстановления информации с оптических дисков – см. главу 8. Пример 1: Копирование всего диска /dev/hda с двумя разделами ext2 – на диск /dev/hdb. Примечание: не требуется заранее создавать разделы на /dev/hdb; если таблица разделов на /dev/hda повреждена, придётся её как-то реконструировать уже после копирования на /dev/hdb. ddrescue -f -n /dev/hda /dev/hdb mapfile ddrescue -d -f -r3 /dev/hda /dev/hdb mapfile fdisk /dev/hdb e2fsck -v -f /dev/hdb1 e2fsck -v -f /dev/hdb2 Пример 2: Копирование раздела ext2 с /dev/sda2 на /dev/sdb2. Примечание: Следует заранее создать раздел /dev/sdb2 в таблице разделов на /dev/sdb – соответствующего типа и размера. ddrescue -f -n /dev/sda2 /dev/sdb2 mapfile ddrescue -d -f -r3 /dev/sda2 /dev/sdb2 mapfile e2fsck -v -f /dev/sdb2 mount -t ext2 -o ro /dev/sdb2 /mnt (и читать восстанавливаемые файлы из /mnt) Пример 3: При копировании всего диска /dev/hda на диск /dev/hdb - /dev/hda застыл на позиции 12345678. ddrescue -f /dev/hda /dev/hdb mapfile <-- /dev/hda застыл (перезапустить /dev/hda или выключить и включить компьютер) (перезапустить копирование на безопасном расстоянии от проблемы) ddrescue -f -i 12350000 /dev/hda /dev/hdb mapfile (затем скопировать в обратном направлении, дойдя до проблемы) ddrescue -f -R /dev/hda /dev/hdb mapfile Пример 4: При копировании диска /dev/hda на диск /dev/hdb – диск /dev/hdb нас подвёл  , придётся теперь копировать все данные уже на /dev/hdc. ddrescue -f -n /dev/hda /dev/hdb mapfile1 <-- /dev/hdb подвёл нас ddrescue -f -m mapfile1 /dev/hdb /dev/hdc mapfile2 ddrescue -f -n /dev/hda /dev/hdc mapfile2 ddrescue -d -f -r3 /dev/hda /dev/hdc mapfile2 Пример 5: При копировании всего диска /dev/hda на диск /dev/hdb – диск /dev/hda перестал отвечать и исчез из списка устройств. ddrescue -f -n /dev/hda /dev/hdb mapfile <-- /dev/hda здесь исчез (перезапустить /dev/hda или выключить и включить компьютер и перезапустить копирование той же командой столько раз, сколько потребуется, вплоть до успешного завершения) ddrescue -d -f -r3 /dev/hda /dev/hdb mapfile 10. Прямой доступ к диску - пока не переведено. В последнее время часто не срабатывал (изменения в ядре Linux, или в прошивках новых дисков???). 11. Режим заполнения. Подробнее тут: Сообщение #85У режима заполнения есть несколько интересных применений. Может пригодиться для стирания личных данных перед отправкой диска для замены по гарантии; для попыток "лечения" "плохих" секторов с неверными контрольными суммами (soft-bad-sectors), для заполнения нескопированной зоны в выходном файле узнаваемым образцом, чтобы облегчить поиск пострадавших файлов. Не переведённые части, только названия частей и краткое пояснение:12. Режим создания файла журнала - пока не переведено. Если имеется образ/клон от другой программы, то ddrescue может создать файл журнала, считая, что все секторы, содержащие только 00h (0x00) - не прочитаны.
13. Вспомогательная утилита ddrescuelog - пока не переведено. Помогает при обработке файлов журналов от/для ddrescue
14. Работа с ddrescuelog (список параметров) - пока не переведено. 15. Сообщения об ошибкахВ работе ddrescue могут быть ошибки. И конечно же, имеются неточности и упущения в данном руководстве. Если Вы о них сообщите, они будут исправлены. Если не Вы, то никто и никогда о них не узнает – и они будут оставаться тут веки-вечные, если не больше.
Итак, о найденных ошибках: пишите письма электронной почтой на адрес: bug-ddrescue@gnu.org Сообщите и номер версии (его можно увидеть, запустив ddrescue --version или ddrescue -V).
Автор, Антонио Диаз, быстро и охотно отвечает, внедряет дельные предложения, выпускает новые доработанные улучшенные версии. Ссылка на сайт программы: https://www.gnu.org/software/ddrescue/В дополнение к базовой ddrescue существуют ещё 2 очень полезных утилиты ddrescueview и ddrutility:ddrescueview https://sourceforge.net/projects/ddrescueview/ для графического представления логов копирования. Автор, как и Антонио Диаз, тоже быстро отвечает на дельные предложения-пожелания и сообщения об ошибках. ddrutility https://sourceforge.net/projects/ddrutility/ - набор утилит, которые позволят, например, считывать выборочно информацию с NTFS-раздела: только MFT, только занятую файлами область диска (ddru_ntfsbitmap); после копирования узнать, какие файлы пострадали (ddru_ntfsfindbad) и помогает решить, нужно ли продолжать попытки чтения плохих секторов. Автор создал свою программу для чтения повреждённых дисков - HDD Super Clone. О ней ниже. Некоторые удачные примеры применения ddrescue, с данного форума:1) Лёгкий случай. SSD 256 Gb с битыми секторами. Успешно скопирован в образ и сдан по гарантии, повреждены не значимые файлы, из образа восстановлен на другой носитель, Windows с него запустилась и не заметила подмены  - Помощь в восстановлении информации с HDD (часть 5), #36832) Случай средней тяжести. Seagate с битыми секторами, отключался из списка устройств. После вычитывания практически совсем умер, но всё нужное успешно прочитано - Помощь в восстановлении информации с HDD (часть 5), #37293) Случай средней тяжести. Toshiba 3 Tb, под Windows считано линейно от начала около 43% с помощью DMDE, дальше было очень медленно, продолжено с помощью ddrescue, осталось не считанным около 248Gb (предположительно, погибает одна магнитная головка), Помощь в восстановлении информации с HDD (часть 5), #3813 и Помощь в восстановлении информации с HDD (часть 5), #4205 и Помощь в восстановлении информации с HDD (часть 5), #4210, Помощь в восстановлении информации с HDD (часть 5), #4790, диск заменён по гарантии. 4) Лёгкий случай. Hitachi 500 Gb - Помощь в восстановлении информации с HDD (часть 5), #4076, продолжение было только в личных сообщениях, были повреждены 3 файла, не особо значимые, +часть служебной информации NTFS. Отчёт в форуме не оставлен, но вся нужная информация восстановлена. 5) Тяжёлый случай. Запиленный разными попытками восстановления диск Seagate. Удалось "не глядя" на файловые структуры скопировать 147 из 157 Гб (просто всё, что легче читалось), оказалось достаточно. Начало тут: Помощь в восстановлении информации с HDD (часть 5), #4880 ; окончание тут: Помощь в восстановлении информации с HDD (часть 5), #4911 Тут простая инструкция с примером: Нужна помощь с умирающим жестким диском, #14Краткая инструкция по запуску копирования "с нуля", в среде Linux.1. Скачать http://cdimage.ubuntu.com/lubuntu/releases/16.04/rel…-desktop-i386.isoили через torrent: http://cdimage.ubuntu.com/lubuntu/releases/16.04/rel…-i386.iso.torrent2. Для флэшки в режиме Persistent обычно подходит программа Linux Live USB Creator: http://www.linuxliveusb.com/en/downloadСкачать, запустить, указать образ Lubuntu, размер Persistence установить равным 800 Мб. Если программа автоматически не опознает тип образа, то вручную указать UBUNTU последних версий для x86 (32-битная система). 3. Можно просто установить Linux отдельной системой на свободный диск (от 6 Гб), на свободное место годного диска в отдельный раздел, а можно запускать с флэшки в режиме Persistent. Для установки можно записать образ на CD-болванку или на флэшку. Возможна установка параллельно с Windows для работы поочерёдно в разных ОС. 4. Если всё нормально запускается, то в главном меню запустить "Системные" - lxterminal, и в окне терминала запустить установку нужных программ: sudo apt install gddrescue mc ddrescueview gcc cmake ccache gddrescue - ключевая программа. mc - для удобства. Остальные - по мере продвижения станет видно, потребуются ли. В начале можно не ставить. Можно и через графический "менеджер пакетов" synaptic. 5. Если всё установлено и настроено, можно к компу с LUBUNTU (выключенному) подключать диск для клона и диск проблемный. Порядок дисков на шлейфах желательно соблюсти так, чтобы: системный (если он есть) был первым - имя будет /dev/sda диск для клона - второй - получит в системе имя /dev/sdb проблемный диск (с повреждёнными секторами) - третий, имя /dev/sdc Это требуется для того, чтобы избежать проблем при самоотключении ("отваливании" из списка устройств) проблемного диска. Исчезнет он последним в списке, а при переинициализации - последним же и появится, и имена устройств не изменятся, что позволит просто повторить команду копирования, не меняя в ней имена дисков. Иногда проблемный диск сразу не виден, тогда можно пробовать его подключить к уже загруженной ОС "на горячую" - !ОСТОРОЖНО! Надо точно знать, что и как делать!!! 6. Проверить список дисков в графическом виде (Главное Меню - Стандартные - Диски) или в терминале: sudo fdisk -lu Отобразит названия устройств, разделы дисков, fdisk также покажет размеры физических и логических секторов. Запомнить имена проблемного диска (источника) и клона (приёмника) и размер физического сектора источника (512 для старых моделей и 4096 для новых, имеющих Advanced Format). Посмотреть SMART (в графическом окне "Диски" - это кнопка _меню_ справа вверху) и сделать выводы о состоянии диска, характере повреждений - и о возможности дальнейшей работы. 7. Базовая команда для запуска копирования: sudo ddrescue /dev/sdc /dev/sdb ~/copylog.txt -f -v -v -v -v --ask -b512 для дисков с физическим сектором 512 байт sudo ddrescue /dev/sdc /dev/sdb ~/copylog.txt -f -v -v -v -v --ask -b4096 для дисков с AF 8. В случае самоотключения диска из системы - отключить его питание, подождать до остановки, включить. Повторить п.6 - проверить, появился ли в устройствах (сам появляется, если контроллер в режиме AHCI). Если сам не определился, то в окне терминала дать команду на переинициализацию дисков: sudo echo 0 0 0 | sudo tee /sys/class/scsi_host/host*/scan Тема с подробностями: Пропадает диск при ошибках чтения - как обновить список дисков в системе?Проверив имена устройств (п.6) - запустить копирование дальше с ключом -X (выход при ошибке). Можно добавить ещё -R (в обратном направлении / реверс). Реверс работает медленнее раза в 3, но иногда нужен. Также можно попробовать указать новую стартовую позицию в секторах, мегабайтах или других единицах на своё усмотрение: sudo ddrescue /dev/sdc /dev/sdb ~/copylog.txt -f -v -v -v -v --ask -b512 -i722000000s sudo ddrescue /dev/sdc /dev/sdb ~/copylog.txt -f -v -v -v -v --ask -b4096 -i640M 9. В случае проблем - пишите в тему, опишу пути решения. Из ddrescue "выросла" другая программа - HDD Super Clone, имеющая некоторые свои плюсы и минусы, но главное, по-моему, в том, что она позволяет импортировать и экспортировать журнал работы ddrescue. То есть, можно использовать эти программы поочерёдно, передавая журнал наработок между ними. Плюсы hddsuperclone: начиная с версии 1.9 у HDD Super Сlone появился графический интерфейс и режим PassThrough=Auto для ускорения работы, данная программа меньше "виснет" и "тормозит" при ошибках, имеет режимы ATA-passthrough, SCSI-passthrough, direct PIO и автоопределение оптимального, лучше обрабатывает ситуацию отключения диска, а именно, в отличие от ddrescue не пишет в лог кучу ошибок чтения, а ждёт появления готовности носителя. Минусы: меньше настроек, закрытый исходный код, только ОС Linux, слабая визуализация карты скопированного. Сайт программы HDD Super Clone и других программ её автора: http://www.sdcomputingservice.com/homeПо окончании работы над переводом материалов по ddrescue переведу материалы по HDD Super Clone. Альтернативное решение под Windows - это программа Non-stop copy, работает пофайлово, в комплекте с ней идёт скрипт для копирования папками и целыми дисками. Для монтирования образов дисков/разделов в среде Windows рекомендую использовать проверенную свободную утилиту OSFmount. Позволяет монтировать образ в том числе в режиме "только для чтения", монтировать часть образа как раздел, всё наглядно. Есть и другие утилиты, например, пробная версия (стр. 25)Исправлено: kickman, 10.01.2024 00:43 |