# Filesystem Hierarchy Standard (FHS) _Файловая система · LinuxLab Knowledge Base_ **TL;DR:** FHS - стандарт что лежит в каких корневых каталогах Linux: /etc - конфиги, /var - изменяемые данные, /usr - статика дистрибутива, /home - пользователи, /tmp - временное. ## Главные каталоги | путь | что внутри | |---|---| | `/` | корень всего; то что не помещается в подкаталоги ниже | | `/bin`, `/sbin`, `/usr/bin`, `/usr/sbin` | исполняемые бинари (`/usr/*` сейчас унифицирован с `/`) | | `/lib`, `/usr/lib` | разделяемые библиотеки и kernel-модули (`/lib/modules/`) | | `/etc` | конфигурация. Текстовая, по конвенции read-only для приложений | | `/var` | данные которые меняются на работающей системе: логи, очереди, БД, кеши | | `/var/log` | логи сервисов | | `/var/lib/` | persistent state приложения (postgres data, docker layers) | | `/var/run` ➜ `/run` | runtime-state (PID-файлы, UNIX-сокеты), tmpfs - пропадает на reboot | | `/usr` | read-only данные дистрибутива: /usr/bin, /usr/lib, /usr/share, /usr/local | | `/usr/local` | то же что /usr но для локально установленного (минуя пакетный менеджер) | | `/home/` | пользовательские каталоги | | `/root` | домашняя root'a (отдельно от /home, чтобы при unmount /home root не залипал) | | `/tmp` | временные файлы; обычно очищается при reboot, иногда tmpfs | | `/proc` | виртуальная FS интерфейса к ядру и процессам - `/proc/self/`, `/proc/cpuinfo`, `/proc/sys/*` | | `/sys` | то же про устройства, шины, [cgroups](/kb/cgroups.md), драйверы (`/sys/fs/cgroup`, `/sys/class/net`) | | `/dev` | устройства: `/dev/null`, `/dev/zero`, `/dev/sda`, `/dev/pts/*` | | `/boot` | ядро, initramfs, GRUB | | `/opt` | опциональные сторонние пакеты которые не следуют FHS (часто vendor-овские) | | `/srv` | данные сервисов - content для веб-сайта, ftp, и т.п. | | `/mnt`, `/media` | mount-points для сменных носителей и разовых mount'ов | ## Логика разделения /usr vs /var vs /etc Разделение не случайное - оно даёт три разные стратегии бэкапов: - `/usr` - переустановится из репозиториев (бэкапить не обязательно) - `/etc` - небольшое, текстовое, обязательно бэкапить - `/var` - большие изменяющиеся данные, нужен снапшот FS или dump ## Системы которые ломают FHS - **NixOS** - всё в `/nix/store/-name/`, FHS не используется - **Container images** - обычно следуют FHS, но «своя» FS внутри контейнера - **macOS** - POSIX, но добавляет `/Applications`, `/System`, `/Users` - **Snap/Flatpak** - пакеты в своих namespace'ах, видны как обычное FHS изнутри ## Команды ```bash ls -la / ``` Посмотреть полный список корневых каталогов твоей системы ```bash df -h / ``` Проверить доступное место в корне ```bash du -sh /var/log /etc /home 2>/dev/null ``` Сравнить размеры главных каталогов ```bash stat -f /tmp ``` -f: показать инфу про файловую систему этого пути (тип, блоки, inode) ## См. также - [Inode](/kb/inode.md) - [File permissions: rwx и chmod](/kb/file-permissions.md)