Чтение онлайн

на главную - закладки

Жанры

Восстановление данных. Практическое руководство

Касперски Крис

Шрифт:

За картами следует массив inode, смещение которого содержится в поле

cg_iusedoff
(адрес первой группы inode продублирован в суперблоке). По сути, в UFS структура inode ничем не отличается от ext2fs, только расположение полей другое. К тому же, имеется только один блок косвенной адресации вместо трех, но это уже детали, не имеющие большого практического значения. Рассмотрим назначение фундаментальных полей, к числу которых принадлежат:

□ 

di_nlink
количество ссылок на файл (0 означает "удален");

□ 

di_size
— размер файла в байтах;

□ 

di_atime
/
di_atimensec
— время последнего доступа к файлу;

□ 

di_mtime
/
di_mtimensec
— время последней модификации;

□ 

di_ctime
/
di_ctimensec
— время последнего изменения inode;

□ 

di_db
— адреса первых 12 блоков данных файла, отсчитываемые во фрагментах от начала группы цилиндров;

□ 

di_ib
— адрес блоков косвенной адресации (фрагменты от начала группы).

Сама структура inode определена в файле /src/ufs/ufs/dinode.h. Для UFS1 эта структура выглядит, как показано в листинге 8.9 и на рис. 8.11.

Рис. 8.11. Схематичное изображение inode

Листинг 8.9. Структура inode в UFS1

struct dinode {

/* 0x00 */ uint16_t di_mode; /* 0: IFMT, права доступа; */

/* см. ниже */

/* 0x02 */ int16_t di_nlink; /* 2: Счетчик ссылок */

/* 0x04 */ union {

uint16_t oldids[2]; /* 4: Ffs: старые ID */

/* пользователя и группы */

int32_t inumber; /* 4: Lfs: номер inode */

} di_u;

/* 0x08 */ u_int64_t di_size; /* 8: Счетчик байтов файла */

/* 0x10 */ int32_t di_atime; /* 16: Время последнего доступа */

/* 0x14 */ int32_t di_atimensec; /* 20: Время последнего доступа */

/* 0x18 */ int32_t di_mtime; /* 24: Время последней */

/* модификации */

/* 0x1C */ int32_t di_mtimensec; /* 28: Время последней */

/*
модификации */

/* 0x20 */ int32_t di_ctime; /* 32: Время последнего */

/* изменения inode */

/* 0x24 */ int32_t di_ctimensec; /* 36: Время последнего */

/* изменения inode */

/* 0x28 */ ufs_daddr_t di_db[NDADDR]; /* 40: Непоср. дисковые блоки */

/* 0x58 */ ufs_daddr_t di_ib[NIADDR]; /* 88: Косв. дисковые блоки */

/* 0x64 */ u_int32_t di_flags; /* 100: Флаги статуса (chflags) */

/* 0x68 */ int32_t di_blocks; /* 104: Факт, занятые блоки */

/* 0x6C */ int32_t di_gen; /* 108: Номер генерации */

/* 0x70 */ u_int32_t di_uid; /* 112: Владелец файла */

/* 0x74 */ u_int32_t di_gid; /* 116: Группа файла */

/* 0x78 */ int32_t di_spare[2]; /* 120: Зарезервировано */

};

В UFS2 формат inode был существенно изменен — появилось множество новых полей, удвоилась ширина адресных полей (листинг 8.10). Что это обозначает для нас в практическом плане? Смещения всех полей изменились, только и всего, а общий принцип работы с индексными дескрипторами остался прежним.

Листинг 8.10. Структура inode в USF2

struct ufs2_dinode {

/* 0x00 */ u_int16_t di_mode; /* 0: IFNT, права доступа; */

/* см. ниже */

/* 0x02 */ int16_t di_nlink; /* 2: Счетчик ссылок */

/* 0x04 */ u_int32_t di_uid; /* 4: Владелец файла */

/* 0x08 */ u_int32_t di_gid; /* 8: Группа файла */

/* 0x0C */ u_int32_t di_blksize; /* 12: Размер блока Inode */

/* 0x10 */ u_int64_t di_size; /* 16: Счетчик байтов файла */

/* 0x18 */ u_int64_t di_blocks; /* 24: Практически занятые байты */

/* 0x20 */ ufs_time_t di_atime; /* 32: Время последнего доступа */

/* 0x28 */ ufs_time_t di_mtime; /* 40: Время последней */

/* модификации */

/* 0x30 */ ufs_time_t di_ctime; /* 48: Время последнего */

/* изменения inode */

Поделиться:
Популярные книги

Черный маг императора 3

Герда Александр
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора 3

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

Пипец Котенку! 3

Майерс Александр
3. РОС: Пипец Котенку!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пипец Котенку! 3

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Ты всё ещё моя

Тодорова Елена
4. Под запретом
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Ты всё ещё моя

S-T-I-K-S. Пройти через туман

Елисеев Алексей Станиславович
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
7.00
рейтинг книги
S-T-I-K-S. Пройти через туман

Имя нам Легион. Том 4

Дорничев Дмитрий
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 4

Сводный гад

Рам Янка
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Сводный гад

Я князь. Книга XVIII

Дрейк Сириус
18. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я князь. Книга XVIII

Королевская Академия Магии. Неестественный Отбор

Самсонова Наталья
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Королевская Академия Магии. Неестественный Отбор

Последняя Арена 6

Греков Сергей
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 6

Жребий некроманта. Надежда рода

Решетов Евгений Валерьевич
1. Жребий некроманта
Фантастика:
фэнтези
попаданцы
6.50
рейтинг книги
Жребий некроманта. Надежда рода