Как восстановить файл TAR с частично перезаписанного диска XFS?
Это сценарий.
Среда Linux (на самом деле Arch Linux).
Несжатый 1,3TB tar
Файл был записан на диск размером 2 ТБ в формате XFS в качестве резервной копии.
Позже загрузочный образ UEFI размером 586 МБ был записан (по ошибке) на то же самое дисковое устройство с помощью этой самой команды: dd if=./bootimage of=/dev/sdd bs=4M
,
Что я понимаю, кроме идиотизма в том, что диск не был ни переформатирован, ни стерт. " Просто " его первые 500+ МБ секторов были перезаписаны.
Моя первая попытка была основана на предположении, что блоки были распределены линейно XFS и что я знал точный размер перезаписанной части. Идея состояла в том, чтобы пропустить все эти блоки, а затем попытаться передать все последующие блоки в cpio
инструмент: он может сделать все возможное, чтобы справиться с поврежденным tar
файл (мой был усечен на голове).
FILESIZE=614465536
SECTSIZE=$(( 2 * 1024 * 1024 )) # 2M
SKIPSIZE=$(( $FILESIZE / $SECTSIZE ))
dd if=/dev/sdd ibs=$SECTSIZE obs=$SECTSIZE skip=$SKIPSIZE | cpio -ivd -H ustar
(Я переключился на передачу блока 2M, потому что размер файла - это много, но не 4M). Не везет на выздоровление. Но теперь я знаю, что структура диска, используемая в XFS, не является линейной.
Следующим шагом было попытаться восстановить файловую систему (хорошо ее копию) с xfs_repair
после того, как таблица разделов была исправлена с fdisk
, Он нашел "подпись XFS", и я получил доступ к этому единственному разделу с помощью loop
устройство. к несчастью xfs_repair
не удалось выполнить "только для чтения 0 из 512 байт". Более того, кажется, что нет способа восстановить потерянные файлы в XFS.
Третья попытка была сделана с помощью таких инструментов, как foremost
а также testdisk
, Но мои попытки пока не принесли большого успеха. Они фактически смогли восстановить некоторые файлы, в основном мультимедийные файлы (GIF, JPG, PNG, WAV и MP3). Но это часть реального содержимого резервной копии. Это выглядит как foremost
имеет фокус на типичных файлах Windows. Но они покрывают около 15% от 1,3 ТБ данных. Там также должно быть много текстовых файлов, файлов libreoffice, а также gzip
а также bzip2
файлы. Пока что 15% лучше, чем 0%.
Я также просмотрел всю имеющуюся у меня документацию и также "погуглил" аналогичные сценарии (также здесь, на сервере). Более актуальными были вопросы об отправке диска фирмам, занимающимся восстановлением данных. Похоже, что в Интернете нет аналогичных заданий.
Какова была бы лучшая стратегия для максимального восстановления файла?
Идеальный будет стремиться восстановить уцелевшую часть этого сингла tar
файл, восстанавливая оставшуюся часть цепочки i-узла.
1 ответ
Многие вещи могут быть восстановлены, если имеется время и понимание соответствующих деталей.
В этом случае я не вижу готового решения, и одна реальная проблема состоит в том, что, скорее всего, интересные части файловой системы и сигнатур tar-файлов были перезаписаны.
Если вы действительно стремитесь сделать это самостоятельно, вот шаги, которые я бы попробовал сделать:
- Сделайте резервную копию 1:1 исходной испорченной файловой системы.
- Выполняйте только действия записи для копий сломанной файловой системы, поскольку весьма вероятно, что для успеха потребуется более одной попытки. Каждая запись связана с риском того, что больше данных будет уничтожено.
- Проверьте, как XFS записывает данные на диск. Скорее всего, это будет сделано последовательно, но убедитесь, что вы знаете, верно ли это предположение, и какой тип данных использует порядок байтов.
- Прочитайте и поймите формат файла tar, попробуйте идентифицировать сигнатуры начала / конца файла tar и повторяющиеся шаблоны (например, контрольные суммы, ...) для сбора информации для фрагментов поиска. Копайтесь в исходный код tar, чтобы понять, как данные записываются в файловую систему.
- Попытайтесь восстановить файл tar и попробуйте исправить его, чтобы вы могли извлечь ваши файлы.
Все упомянутые инструменты, такие как photorec, testdisk, прежде всего, ... обеспечат вам лишь ограниченный успех при восстановлении файлов, и даже если восстановленное количество будет достаточно хорошим, часто возникают такие проблемы, как: множество ложных срабатываний, пропущенные имена файлов, нет структуры папок. Думая о 1,3 Тб данных, все это будет важно, чтобы оценить этот процесс как успешный.
С предоставленной вами информацией, похоже, что "только" 500 Мб данных действительно обрезаны, а все остальное должно быть в "хорошем" состоянии, и, следовательно, должна быть возможность получить хороший результат, но это зависит от того, как xfs & tar обработал данные. Поскольку tar поступает из области ленты, расположение данных должно быть очень прямым. Тем не менее, этот процесс не будет легким вообще и будет включать обработку необработанных данных до определенного момента.