Извлекайте данные из подключаемого раздела, отказываясь от `cp`, но разрешая` dd`

254
Pece

Недавно мой внутренний привод вышел из строя после ручной перезагрузки, и я хотел бы получить данные перед их изменением. Мой компьютер - Macbook Pro середины 2012 года, и диск отформатирован как HFS +. (С моей точки зрения, проблема связана с аппаратным обеспечением и поэтому не относится к миру Apple, поэтому я публикую здесь, а не на apple.stackexchange, но не стесняюсь переносить его при необходимости.)

Обычное ddклонирование - не вариант: это диск на 500 ГБ, и по какой-то причине скорость копирования составляет 20 КБ / с (по крайней мере, bs=512я рекомендовал это делать при работе с жесткими дисками), то есть приблизительно 6000 часов, чтобы сделать работу ...

Монтирования раздела и использования cpтоже нет: когда я пытаюсь это сделать, я получаю сообщение

cp : Input/output error 

Также может быть важно сказать, что я не могу смонтировать раздел традиционным способом. Он монтируется только при запуске в режиме восстановления или после запуска анализа с TestDisk при загрузке с внешнего диска.

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

could not get Block 2, not a MDB sector [...] volumeType is 0 

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

Но я все еще могу использовать ddотдельные файлы (мне не нужны все данные), когда раздел смонтирован. Есть ли сценарий / программное обеспечение, которое используется ddвнутри для копирования содержимого целых каталогов? Я действительно не хочу писать ddкоманду для сотен файлов ...

Или у кого-нибудь есть лучшая идея вернуть немного этих данных?

0
Какую ОС вы используете для `dd` диска? Daniel B 8 лет назад 0
@DanielB OS X. Я безуспешно пытался загрузиться с живого usb-ключа Ubuntu, поэтому я установил OS X на внешний диск, чтобы получить некоторые инструменты (также `dd` действительно доступен в системе восстановления). Pece 8 лет назад 0
`dd` очень медленно работает с` / dev / diskX`. Вместо этого используйте блоки больших размеров (≥1 МиБ) и `/ dev / rdiskX`. Также убедитесь, что (очень!) Файловая система не смонтирована с диска / раздела, который вы клонируете. Daniel B 8 лет назад 1
@DanielB Да, я читал об исходной версии диска, поэтому в настоящее время я запускаю `dd` с` rdisk` вместо `disk` с размером блока 20 МБ, и это не должно занимать более 10 или 12 часов. Для потенциально смонтированных разделов я фактически клонирую уникальный раздел, и `dd` автоматически отказывает вам в разрешении, если он смонтирован. Pece 8 лет назад 0

1 ответ на вопрос

1
Xen2050

Использование ddс bs=512может действительно нанести урон скоростям, я представляю, что это похоже на попытку пробежать милю, но с шагом в 1 дюйм. Использование большего значения, такого как bs=10Mили больше, должно быть намного лучше.

В любом случае, файлы, вероятно, не все смежные, поэтому попытка вырезать только нужные части диска с ddне подойдет для каждого файла, и (вероятно, не слишком уверенный в том, как работает HFS) также не даст вам имена файлов. Лучше было бы попробовать программу, которая может копировать файлы с разделов, которые могут иметь проблемы, используя:

  • testdiskможет просматривать файлы (включая недавно удаленные) для многих файловых систем и копировать их из раздела. Это родственная программа, которая photorecможет выполнять поиск по сырому диску (или образу диска) и копировать файлы, но обычно без их оригинальных имен.

  • Но лучшее, что можно использовать gddrescueдля создания копии читаемых частей диска, он должен быть экспертом по восстановлению данных с неисправными дисками, он может пропустить части, которые не читаются, и как только он получит все «легкое» части, которые вы можете попробовать еще раз для «жестких» частей, которые могут или не могут читать, но занимает много времени. Тогда вы могли бы правильно попытаться проверить / исправить файловую систему и вырезать данные (photorec), не беспокоясь о дальнейшем повреждении диска или внезапном сбое.

    • См. Руководство GNU ddrescue, и в Интернете есть несколько руководств (но я более склонен сначала прочитать прекрасное руководство).
Спасибо за совет. Так как мой вопрос, я фактически запустил клон `dd` с` bs = 20m` и (все еще работает), он должен быть закончен сегодня вечером. Тем не менее, я не думаю, что это пойдет на пользу, так как я постоянно вижу ошибку ввода / вывода на экране (поэтому я представляю, что `dd` пишет много нулей в моем изображении ...). Я пробовал testdisk, но вы не можете заглянуть внутрь и скопировать разделы HFS. Я попробовал photorec, который хотел получить что-то около 3000 часов, чтобы получить мои файлы. Наконец, я услышал о GNU ddrescue, и это мой следующий шаг, если `dd` потерпит неудачу. Спасибо за советы! Pece 8 лет назад 0