Это сценарий.
Среда - Linux (на самом деле Arch Linux).
Записан несжатый файл tar размером 1,3 ТБ на свежеотформатированном 2 ТБ диске в формате XFS в качестве резервной копии.
Позже загрузочный образ UEFI размером 586 МБ был записан (по ошибке) на то же дисковое устройство с помощью этой самой команды: dd if =. / bootimage of = / dev / sdd bs = 4M
.
Насколько я понимаю, помимо идиотизма действия, диск не был ни форматирован, ни очищен. « Just » его первые более 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.
Третья попытка была сделана с помощью таких инструментов, как , прежде всего
и testdisk
. Но пока мои попытки не увенчались успехом. На самом деле им удалось восстановить некоторые файлы, в основном мультимедийные (GIF, JPG, PNG, WAV и MP3). Но это лишь часть фактического содержимого резервной копии. Похоже, что в первую очередь
ориентирован на типичные файлы Windows. Но они покрывают около 15% из 1,3 ТБ данных. Также должно быть много текстовых файлов, файлов libreoffice, а также файлов gzip
и bzip2
. Пока 15% лучше, чем 0%.
Я также просмотрел всю имеющуюся у меня документацию, а также искал похожие сценарии (также здесь, на serverfault ). Наиболее важные из них касались отправки диска фирмам по восстановлению данных. Похоже, что подобная задача не задокументирована в Интернете.
Какая была бы лучшая стратегия для максимального восстановления файлов?
Идеальная стратегия была бы направлена на восстановление уцелевшей части этого единственного tar
, восстановив оставшуюся часть цепочки i-узлов.
Многие вещи можно исправить, если время и понимание соответствующие детали доступны.
В этом случае я не вижу готового решения, и одна реальная проблема заключается в том, что, скорее всего, интересные части файловой системы и подписи файлов tar были перезаписаны.
Если вы действительно стремитесь сделать это самостоятельно, вот шаги, которые я бы попытался сделать:
Все упомянутые инструменты, такие как photorec, testdisk , в первую очередь, ... обеспечит вам лишь ограниченный успех в восстановленных файлах, и даже если восстановленный объем достаточно хороший, часто возникают проблемы, такие как: множество ложных срабатываний, отсутствующие имена файлов, отсутствие структуры папок. Если подумать о 1,3 ТБ данных, все это будет важно для того, чтобы оценить этот процесс как успешный.
С предоставленной вами информацией, похоже, что «только» 500 МБ данных действительно искажены, а все остальные должны быть в "хорошее" состояние и поэтому должно быть возможно получить хороший результат, но это зависит от того, как xfs и tar обрабатывают данные. Поскольку tar поступает из области ленты, структура данных должна быть очень простой. Тем не менее, этот процесс будет совсем непростым и до определенного момента потребует обработки необработанных данных.