Что такое иноды в Linux и как они используются?

Для организации всех файлов в системе ядро поддерживает структуру одного иерархи­ческого каталога. (В отличие от таких операционных систем, как Microsoft Windows, где своя собственная иерархия каталогов имеется у каждого дискового устройства.) Основу этой иерархии составляет корневой каталог по имени / (слеш). Все файлы и каталоги являются дочерними или более отдаленными потомками корневого каталога. Пример такой иерархической файловой структуры показан на рис. 1.

Что такое Inode в Linux?

Индод — это структура данных. Он определяет файл или каталог в файловой системе и хранится в записи каталога. Иноды указывают на блоки, которые составляют файл. Индод содержит все административные данные, необходимые для чтения файла. Метаданные каждого файла хранятся в inode в табличной структуре.

При использовании программы, которая ссылается на файл по имени, система ищет файл записи каталога, в котором он существует, чтобы получить соответствующий индекс. Это дает вашей системе данные файла и информацию, необходимую для выполнения процессов или операций.

Что такое Inode в Linux?

Иноды обычно расположены в начале раздела . Они хранят всю информацию, связанную с файлом, кроме имени файла и фактических данных. Все файлы в любом каталоге Linux имеют имя файла и номер индекса. Пользователи могут получить метаданные для файла, ссылаясь на номер инода.

Имена файлов и номера индексов хранятся в отдельном индексе и ссылаются на индекс. Вы можете ссылаться на метаданные, которые представляют файл. Можно иметь несколько имен файлов, которые ссылаются на один фрагмент данных или индекс, как вы можете видеть на рисунке ниже.

Читайте также:  iOS 12.5 для старых моделей iPhone с поддержкой уведомлений о COVID-19

Каталоги и ссылки

Каталог — это особый файл, чье содержимое принимает форму таблицы из имен файлов в совокупности с указателями на соответствующие файлы. Эта связка из имени файла и указателя на него называется ссылкой, и у файлов в одном и том же или в разных ката­логах может быть несколько ссылок, а следовательно, и несколько имен.

Каталоги могут содержать ссылки как на файлы, так и на другие каталоги. С помощью ссылок между каталогами устанавливается иерархия каталогов, показанная на рис. 1.

Каждый каталог содержит как минимум две записи: . (точка), которая представляет собой ссылку на сам каталог, и .. (точка-точка), которая является ссылкой на его роди­тельский каталог — тот каталог, что расположен над ним в иерархии. Каждый каталог, за исключением корневого, имеет свой родительский каталог. Для корневого каталога запись .. является ссылкой на него самого (таким образом, обозначение /.. — то же самое, что и /).

Символьные ссылки

Подобно обычной ссылке, символьная ссылка предоставляет альтернативное имя для файла. Но, в отличие от обычной ссылки, представляющей собой в списке каталога запись вида «имя файла плюс указатель», символьная ссылка — это специально помеченный файл, содержащий имя другого файла. (Иными словами, у символьной ссылки в каталоге есть запись вида «имя файла плюс указатель», и файл, на который ссылается указатель, содержит строку с именем другого файла.) Этот последний файл часто называют целью символьной ссылки, и зачастую говорится, что символьная ссылка «указывает» или «ссылается» на целевой файл. Когда в системном вызове указывается путевое имя, в боль­шинстве случаев ядро автоматически снимает косвенность каждой символьной ссылки в путевом имени (также говорят «следует по ним»), заменяя ее именем того файла, на который она ведет. Этот процесс может происходить рекурсивно, если цель символьной ссылки сама по себе является символьной ссылкой. (Ядро накладывает ограничение на количество ссылок, чтобы предотвратить возможность появления замкнутых цепочек символьных ссылок.) Если символьная ссылка указывает на несуществующий файл, то говорится, что это битая ссылка.

Читайте также:  Linux Mint vs Ubuntu: что лучше выбрать

В качестве альтернативных названий для обычной и символьной ссылки зачастую используются выражения «жесткая ссылка» и «мягкая ссылка».

Каталоги файловой системы Linux

  • /bin : Где находятся основные команды Linux, такие как ls, mv и т.д.
  • /boot : где находится загрузчик и загрузочные файлы.
  • /dev : где все физические носители монтируются как USB и DVD.
  • /etc : содержит конфигурационные файлы установленных пакетов.
  • /home : где у каждого пользователя есть личная папка для размещения его собственных файлов и папок, например /home/itgap.
  • /lib : где расположены библиотеки установленных пакетов
  • /media : где расположены внешние устройства, такие как DVD и USB-флешки, которые смонтированы, и вы можете получить доступ к их файлам отсюда.
  • /mnt : Где вы монтируете сетевые папки и другие дистрибутивы подключенные через USB или DVD.
  • /opt : где расположены установленные программы, имеющие большой дисковый объем
  • /proc : эта необычный каталог для процессов, запущенных в системе, и вы можете получить к ним доступ и увидеть много информации о текущих процессах.
  • /root : домашний каталог для пользователя root.
  • /sbin : Как и /bin, но все файлы только для пользователя root.
  • /tmp : каталог временных файлов.
  • /usr : Содержит пользовательские программы. По размеру это один из самых больших каталогов файловой системы. В этот каталог устанавливаются практически все программы.
  • /var: Содержит системные журналы и другие переменные данные, которые подвергаются наиболее частому изменению.
Каталоги файловой системы Linux

Как исключить файлы, открытые определённым пользователем

Чтобы исключить файлы, которые были открыты пользователем, используйте оператор ^. Исключение пользователей из списка облегчает поиск интересующей вас информации. Вы должны использовать опцию -u, как и раньше, и добавить символ ^ в начале имени пользователя.

sudo lsof -u ^mial

Отрицание (поиск любых значений, кроме приведённых) можно применять с любыми опциями, для которых можно указать какое-либо значение, то есть с именами пользователей, именами команд, идентификаторами процессов, папками и т.д.

Например, чтобы показать все файлы, которые были открыты в директории /home, но которые открыты процессами, не принадлежащими пользователю mial:

sudo lsof +D /home -u ^mial

Тест Disk Drill

В третьем тесте программа Disk Drill показала наихудший результат. Она не нашла большую часть файлов, даже тех, которые не были удалены.

Программа предложила просканировать весь диск, что может повысить шансы поиска утерянных данных.

В результате сканирования всего диска Disk Drill нашла утерянную информацию. Результат такой же, как и в предыдущих тестах.

Одно видео повреждено, его удалось восстановить, но большая часть информации затёрлась.

В целом Disk Drill справилась с заданием, хотя и пришлось потратить больше времени на поиски утерянных данных.