Получить данные из подключаемого раздела, отказавшись от `cp`, но разрешив`dd`
Недавно мой внутренний привод вышел из строя после ручной перезагрузки, и я хотел бы получить данные перед их изменением. Мой компьютер - 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
команда на сотню файлов...
Или у кого-нибудь есть лучшая идея вернуть немного этих данных?
1 ответ
С помощью dd
с bs=512
действительно может нанести вред скорости, я представляю, что это похоже на попытку пробежать милю, но с шагом в 1 дюйм. Используя большее значение, как bs=10M
или больше должно быть намного лучше.
Во всяком случае, файлы, вероятно, не все смежные, поэтому пытаются вырезать только нужные части диска с dd
не будет работать для каждого файла, и (вероятно, не слишком уверен, как работает HFS) также не получит вам имена файлов. Лучше было бы попробовать программу, которая может копировать файлы с разделов, которые могут иметь проблемы, используя:
testdisk
может просматривать файлы (включая недавно удаленные) для многих файловых систем и копировать их из раздела. Это сестринская программаphotorec
может выполнять поиск по сырому диску (или образу диска) и копировать файлы, но обычно без их оригинальных имен.Но лучше всего использовать
gddrescue
чтобы сделать копию читаемых частей диска, он должен быть экспертом по восстановлению данных с неисправными дисками, он может пропустить части, которые не читаются, и как только он получит все "легкие" части, которые вы можете попробовать снова для "твердые" части, которые могут или не могут читать, но занимают много времени. Тогда вы могли бы правильно попытаться проверить / исправить файловую систему и вырезать данные (photorec), не беспокоясь о дальнейшем повреждении диска или внезапном сбое.- См. Руководство GNU ddrescue, и в Интернете есть несколько руководств (но я лучше сначала прочту прекрасное руководство).