Файловая система организует доступ и хранение файлов на жестком диске и съемных устройствах.
Файловая система в Linux образует иерархическую древовидную структуру, которая описывается стандартом FHS (Filesystem Hierarchy System). Согласно этому стандарту любая система Linux содержит определенные каталоги и файлы, в которых хранятся только определенные файлы
Например, установленные программы хранятся в одном каталоге, а настройки системы в другом каталоге и так далее. Таким образом, пользователи и само ядро знают где и какие файлы хранятся в системе.
Согласно FHS в системе существует только один родительский корневой каталог, от которого отходят ветви — подкаталоги. Даже если в системе присутствует несколько жестких дисков и съемных устройств, то все равно корневой каталог только один.
Так выглядит файловая структура всех систем 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 числами: старшим и младшим. Старший означает какой драйвер использовать с данным устройством, а младший — конкретное физическое устройство либо раздел на диске.