Чтение Суперблока - PullRequest
       87

Чтение Суперблока

5 голосов
/ 04 декабря 2008

Я знаю, что в Unix (в частности, Mac OS X) суперблок хранит информацию о расположении данных на диске, включая адреса дисков, с которых начинаются и заканчиваются inode. Я хочу отсканировать список inode в моей программе, чтобы найти удаленные файлы. Как я могу найти адрес диска, с которого начинаются иноды? Я посмотрел на команду statfs, но она не предоставляет эту информацию.

Ответы [ 2 ]

2 голосов
/ 04 декабря 2008

Поскольку вы упоминаете Mac OS X, давайте предположим, что вы хотите сделать это только для HFS +. Страница Википедии предоставляет некоторую информацию о возможных способах запуска, например, это говорит о расположении на диске:

Секторы 0 и 1 тома являются загрузочными блоками HFS. Они идентичны загрузочным блокам на томе HFS. Они являются частью оболочки HFS.

Сектор 2 содержит заголовок тома, эквивалентный главному блоку каталогов в томе HFS. Заголовок тома хранит самые разнообразные данные о самом томе, например размер блоков выделения, отметку времени, которая указывает, когда том был создан, или местоположение других структур тома, таких как файл каталога или файл переполнения экстента. Заголовок тома всегда находится в одном и том же месте.

Файл распределения, который отслеживает, какие блоки выделения свободны, а какие используются. Это похоже на битовую карту тома в HFS, каждый блок выделения представлен одним битом. Ноль означает, что блок свободен, а один означает, что блок используется. Основное различие с битовой картой тома HFS заключается в том, что файл размещения хранится как обычный файл, он не занимает специальное зарезервированное пространство в начале тома. Файл размещения также может изменять размер и не должен храниться непрерывно в томе.

После этого все усложняется. Читайте, например, B * деревья .

Я не пользователь Mac OS, но меня удивило бы, если бы уже не были написаны инструменты для сканирования удаленных файлов, возможно, некоторые из них с открытым исходным кодом и могли бы обеспечить более конкретную отправную точку?

1 голос
/ 07 декабря 2008

У вас будут некоторые проблемы с поиском удаленных файлов, потому что на диске осталось немного, чтобы найти их при удалении файла.

Если вы удаляете файл в файловой системе FAT (или UDF), его запись в каталоге просто помечается как «удаленная», при этом большая часть записи dir остается без изменений.

На томах HFS из-за использования B-деревьев удаленные правки должны быть удалены из каталога, иначе поиск элементов не будет работать более эффективно (ну, этот аргумент может быть немного слабоват, но факт в том, что удаленные записи удаляются и перезаписываются).

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

...