Файловая система организует доступ и хранение файлов на жестком диске и съемных устройствах.

Файловая система в Linux образует иерархическую древовидную структуру, которая описывается стандартом FHS (Filesystem Hierarchy System). Согласно этому стандарту любая система Linux содержит определенные каталоги и файлы, в которых хранятся только определенные файлы

Например, установленные программы хранятся в одном каталоге, а настройки системы в другом каталоге и так далее. Таким образом, пользователи и само ядро знают где и какие файлы хранятся в системе.

Согласно FHS в системе существует только один родительский корневой каталог, от которого отходят ветви — подкаталоги. Даже если в системе присутствует несколько жестких дисков и съемных устройств, то все равно корневой каталог только один.

Так выглядит файловая структура всех систем Linux: 

Файловая система Linux

Описание каталогов

Рассмотрим какие файлы и каталоги присутствуют в системе и опишем для чего они нужны.

/bin — (сокращенно от “binary” — исполняемый), содержит необходимые программы/утилиты (исполняемые файлы) для функционирования и восстановления системы.

/boot — (сокращенно от “boot” — загрузка), содержит загрузчик системы, образ ядра.

/dev — (сокращенно от “devices” — устройства), содержит файлы для “общения” с внешними устройствами (USB, CD/DVD).

/etc — содержит конфигурационные файлы системы, различные настройки.

/home — домашний каталог всех зарегистрированных пользователей системы (кроме root). Содержит пользовательские данные, которые не будут утеряны при сбое системы.

/lib — (сокращенно от “library” — библиотека), содержит библиотечные файлы установленных программ.

/mnt — (сокращенно от “mount” — монтировать), содержит временные ссылки файлов и каталогов смонтированных файловых систем (от съемных носителей). Например, если подключить USB флэшку к компу, то содержимое флэшку можно будет просмотреть через данный каталог.

/sbin — (сокращенно от “system binary” — системные исполняемые файлы), содержит системные исполняемые файлы, которые доступны только администратору.

/opt — содержит библиотеки и исполняемые файлы дополнительного ПО.

/usr — (сокращенно от “user” — пользовательский), содержит конфигурационные и исполняемые файлы всей системы, в том числе и различные пользовательские прикладные программы.

/tmp — (сокращенно от “temporary” — временный), содержит временные файлы, которые можно удалить после завершения работы программ. После перезагрузки системы файлы удаляются.

/root — домашний каталог суперпользователя root.

Почему данный каталог не может быть в каталоге /home вместе с остальными каталогами пользователей?

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

/var — (сокращенно от “variables” — переменные), содержит различные логи, журнал событий в системе и так далее. После перезагрузки системы файлы не удаляются.

/proc — (сокращенно от “process” — процессы), содержит подкаталоги, которые хранят информацию о запущенных процессах в системе. Каждый процесс и каталог характеризуются идентификатором процессов PID.

Типы файлов

В Linux принято, что абсолютно все объекты являются файлами. Не все файлы хранят данные, поэтому выделяют следующие типы файлов:

Обычные (регулярные) файлы — любые текстовые, исполняемые, библиотечные, графические файлы.

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

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

Жесткие ссылки — представляет собой второе имя файла. Данная ссылка указывает на индексный дескриптор файла.

Сокеты — файлы, которые используются для взаимодействия между различными процессами.

Именованные каналы FIFO — подобны сокетам, но работают в одном направлении.

Файлы блочных и символьных устройств — используются для взаимодействия с внешними устройствами и представляют собой своего рода шлюз между системой и внешним устройством. Данные файлы характеризуются 2 числами: старшим и младшим. Старший означает какой драйвер использовать с данным устройством, а младший — конкретное физическое устройство либо раздел на диске.