Несколько дней назад все мои метаданные на флэш-карте формата ext4 были перезаписаны.
Теперь я собираюсь поразмышлять о том, как это произошло. Это чистое предположение. Это произошло сразу после того, как я использовал другую карту. Метка тома на карте теперь такая же, как на другой карте. Поэтому я подозреваю, что я не синхронизировал/размонтировал другую карту, когда вытащил ее. Устройство чтения карт не уведомляет систему должным образом, когда вытаскивается карта, поэтому при следующей синхронизации система не узнала, что я сменил карты, и перезаписала метаданные.
Первое, что я сделал, когда это произошло, — создал образ с помощью dd. Второе, что я сделал, — сделал образ доступным только для чтения. Третье, что я сделал, — создал копию образа, доступную для записи.
Я открыл для себя photorec, который смог восстановить некоторые вещи, но не все. Я думаю, что одна из причин этого в том, что он неразрушающий.
Поскольку некоторые из восстановленных файлов являются текстовыми, я подозреваю, что photorec использует минимальную информацию о формате файла, если вообще использует.
Чтобы попытаться восстановить любые другие файлы с карты, мне нужно знать, как файлы размещены в ext2. Я подозреваю, что в основе лежит то, что файлы разбиты на блоки, которые записаны в сектора, а информация о том, как найти следующий сектор, каким-то образом записана в текущем секторе.
Для продолжения мне нужна информация о том, как записан указатель на следующий сектор.
PS: Я читаю код photorec, но у меня возникли некоторые проблемы с его чтением. То ли это я, то ли код уродливый, я не знаю.
PPS: Я нашел некоторую информацию о том, как организованы файловые системы ext, но не могу найти базовую информацию о структуре файлов.
решение1
PhotoRec сканирует диск (или образ диска), ища непрерывные фрагменты байтов, которые выглядят как известные форматы файлов (например, он может распознавать JFIF/EXIF (JPEG) по заголовкам сегментов). Довольно просто, но ограничено.
Набор детективаотличный инструмент для копания в файловых системах. С небольшой осторожностью (и написанием скриптов для его инструментов и редактированием шестнадцатеричного образа диска, когда он сбивается с пути), его можно использовать для восстановления.
Для инструмента, который более глубоко понимает ext, попробуйтеext4magic? (У меня пока не возникало необходимости этим воспользоваться.)
Documentation/filesystems/ext2.txt
в исходниках ядра есть высокоуровневый обзор общей структуры.Ext4 Викиимеет хорошую информацию, в том числеРазметка диска Ext4содержащий более подробную информацию (в основном относящуюся и к ext[23]).
Но да, данные файла разделены на блоки. В ext2 каждый файл представлен inode, который содержит прямые блоки (указатели на блоки данных), косвенные блоки (которые содержат указатели на прямые блоки), двойные косвенные блоки и тройные косвенные блоки. Обратных ссылок нет, поэтому для поиска родственных блоков блока данных вам придется сначала просканировать все inode и указатели на блоки, чтобы найти его владельца.