После перехода с Windows на Linux можно заметить, что пропали привычные "диски" С:, D:, E: и прочее. В этой статье я опишу структуру каталогов в Linux.
Вместо них в Unix-подобных системах используются точки монтирования. Это когда определенный раздел диска подключается в определенную папку. Аналогично в Windows каждому разделу присваивается буква.
Структура файловой системы в Linux и в других UNIX-подобных операционных системах определяется стандартом Filesystem Hierarchy Standard (FHS). Однако в файловых системах Linux также есть некоторые каталоги, которые еще не определены в этом стандарте.
- / - корневой каталог
- /bin - основные пользовательские двоичные файлы команд
- /boot - статические файлы загрузчика
- /cdrom - точка монтирования CD-дисков
- /dev - файлы устройств
- /etc - файлы конфигурации
- /home - домашние каталоги пользователей
- /lib - основные библиотеки и модули ядра
- /lost+found - восстановленные файлы
- /media - подключаемые носители
- /mnt - временные точки монтирования
- /opt - дополнительные пакеты приложений
- /proc - файлы ядра и процессов
- /root - домашний каталог суперпользователя (root)
- /run - файлы состояний приложений
- /sbin - системные бинарные файлы команд
- /selinux - виртуальная файловая система SELinux
- /srv - данные предоставляемых сервисов
- /tmp - временные файлы
- /usr - пользовательские двоичные файлы и данные, используемые только для чтения
- /var - изменяющиесы данные
/ - корневой каталог
Корневой каталог это что-то похожее на системный диск C: в Windows. В общем, это самый главные каталог. Остальные разделы диска и устройства располагаются в подкаталогах корневого каталога.
/bin - основные двоичные файлы команд
В этом каталоге хранятся только основные двоичные файлы команд. Например: bash, tar, dd, ls, cp, mv и прочее. Все остальные двоичные файлы хранятся в /usr/bin. Сделано это разделение для того, что бы была возможность запуска и использования системы без монтирования дополнительных разделов.
/boot - статические файлы загрузчика
Тут находятся файлы загрузчика GRUB и ядра Linux.
/cdrom - точка монтирования CD-дисков
Каталог /cdrom не является частью стандарта FHS, но вы по-прежнему можете найти его в Ubuntu и в других дистрибутивах. Это временное место, где монтируются диски CD-ROM, когда они вставляются в компьютер. Однако, стандартное место для подключаемого носителя находится внутри каталога /media.
/dev - файлы устройств
В Linux устройства представлены в виде файлов устройств, которые находятся в /dev. На самом деле физически этих файлов нет.
Например файл /dev/sda это первый винчестер в машине. Общение с ним производится путем ввода-вывода. Например что бы поменять структуру разделов нужно сообщить ему это. Разделы этого винчестера могут иметь такие файлы: /dev/sda1, /dev/sda2, /dev/sda5. Можно например сделать полную какого-нибудь раздела через утилиту dd (она будет иметь размер в сам раздел).
Тут же располагаются и другие устройства. Например, /dev/video0 - это может быть веб-камера. В каталоге /dev/input располагаются устройства ввода (клавиатура, мышь и прочее).
Кроме настоящих устройств есть еще и псевдо-устройства. Например /dev/zero - устройство, которое при чтении всегда возвращает нули. /dev/random - генерирует случайные числа. /dev/null - устройство, которое ничего не выводит, но если в него что-нибудь послать, то оно все удаляет.
/etc - файлы конфигурации
В этом каталоге располагаются конфигурационные файлы для всей системы. Большинство файлов в этом каталоге можно отредактировать обычным текстовым редактором. Здесь нет файлов для каждого пользователя, они хранятся в их домашних каталогах (/home).
/home - домашние каталоги пользователей
Например, если имя вашего пользователя alex, то вы должны иметь домашний каталог /home/alex. В этом каталоге располагаются пользовательские данные и конфигурационные файлы для каждого пользователя. Каждый пользователь имеет полные права на чтение/запись в свою домашнюю папку.
Обычно файлы конфигурации располагаются в папках, которые начинаются с точки, например .config. Файлы, которые начинаются с точки считаются скрытыми.
/lib - основные библиотеки и модули ядра
В каталоге /lib находятся библиотеки, необходимые для основных двоичных файлов, находящихся в каталогах /bin и /sbin. Библиотеки, необходимые двоичным файлам, находящимся в каталоге /usr/bin и /usr/sbin, находятся в каталоге /usr/lib
/lost+found - восстановленные файлы
В каждой файловой системе Linux есть каталог lost+found. Если произошел сбой в работе файловой системы, то при следующей загрузке будет выполнена проверка файловой системы. Все найденные поврежденные файлы будут размещены в каталоге lost+found,так что вы можете попытаться восстановить данные настолько, насколько это можно будет сделать.
/media - подключаемые носители
Например, если вы вставили CD-диск или флешку, то она должна автоматически подключится и примонтироватся в соотвествующем подкаталоге.
/mnt - временные точки монтирования
В этом каталоге монтируются временные файловые системы. Например, вам нужно подключить раздел с вашей Windows, что бы что-то там сделать. Вы можете примонтировать его в /mnt/windows. Аналогично вы можете например скопировать файлы с временно подключенного винчестера.
/opt - дополнительные пакеты приложений
Обычно тут хранятся файлы проприетарных программ или тех программ, которые не подчиняются стандартной иерархии каталогов.
/proc - файлы ядра и процессов
Каталог похож на /dev потому что не имеет физических файлов. Этот каталог содержит информацию и системе и о процессах.
Например, информацию о CPU можно найти в файле /proc/cpuinfo. Информацию о точках монтирования - /proc/mounts. И так далее.
/root - домашний каталог суперпользователя (root)
Это каталог суперпользователя root. Вместо того, что бы находится в /home/root он находится в /root. Это удобно при однопользовательском режиме, или когда нужно что-то сделать с разделом /home.
/run - файлы состояний приложений
Это новый каталог. В нем хранятся вспомогательные файлы для служб и процессов. Например PID процессов запущеных сервисов, сокеты и прочее. Эти файлы нельзя хранить в /tmp потому что там они могут быть удалены.
/sbin - системные двоичные файлы команд
Данный каталог похож на /bin и используется пользователем при администрировании системы.
/selinux - виртуальная файловая система SELinux
Если в вашем дистрибутиве для обеспечения безопасности используется пакет SELinux (например, в Fedora и Red Hat), то в каталоге /selinux будут находиться специальные файлы, используемые SELinux. Этот каталог похож на каталог /proc. В Ubuntu SELinux не используется, поэтому наличие этой папки в Ubuntu, возможно, является ошибочным.
/srv - данные предоставляемых сервисов
В этом каталоге находятся файлы предоставляемых системой сервисов. Например, сайты веб-сервера могут располагатся в /srv/http. А данные FTP могут располагатся в /srv/ftp.
/tmp - временные файлы
Данный каталог содержит временные файлы программ. Обычно этот каталог чистится сам при перезапуске системы. Также его можно чистить вручную.
/usr - пользовательские двоичные файлы и данные, используемые только для чтения
Этот каталог содержит двоичные файлы и библиотеки, которые используются пользователем, а не системой. Этот каталог обычно используется только на чтение.
В каталогах /usr/bin и /usr/sbin хранятся не очень важные двоичные файлы, в отличии от /bin и /sbin. Библиотеки для них хранятся в /usr/lib.
Кроме этих каталогов есть еще и другие каталоги. Например, в /usr/share хранятся файлы не зависимые от архитектуры, например графика (темы, иконки и прочее). В каталоге /usr/local хранятся файлы программ, которые были откомпилированны локально.
/var - изменяющиесы данные
В этом каталоге хранятся данные приложений из каталога /usr. Например, журнальные файлы (логи) можно найти в каталоге /var/log.
Примечание: в некоторых дистрибутивах иерархим может отличатся, но обычно она такая, как описано в этой статье.