Файловая система — это организация данных и метаданных на устройстве хранения. В Linux в отличие от Windows есть только одна файловая структура.
Файловая система в Linux начинается от корня (/), и все локальные файловые системы, все локальные устройства и все удаленные системы представлены в ней подкаталогами.
Операционная система Linux поддерживает множество файловых систем, от журналируемых систем до кластерных и файловых систем с шифрованием, но имеет и свою родную.файловую систему — Ext2FS (second extended filesystem).
Содержание
Файлы и их имена
Имена обычных файлов в Linux могут иметь длину до 255 символов и состоять из любых символов, кроме символа с кодом 0 и символа / (слэша). Однако имеется еще ряд символов, которые имеют в оболочке shell специальное значение и которые поэтому не рекомендуется включать в имена. Это следующие символы:
! @ # $ & ~ % * ( ) [ ] { } ' " \ : ; >
Если имя файла содержит один из этих символов (это не рекомендуется, но возможно), то вы должны перед этим символом поставить символ обратного слэша \ (в том числе и перед самим этим слэшем, то есть повторить его дважды).
$ mkdir \\my\&his
Можно также заключить имя файла или каталога с такими символами в двойные кавычки. Например, для создания каталога с именем “My old files” следует использовать команду
$ mkdir "My old files"
так как команда
$ mkdir My old files
создаст каталог с именем “My”.
Не использовать эти символы, включая пробел, в именах файлов и каталогов, потому что могут возникнуть проблемы при обращении к таким файлам из некоторых приложений, а также при переносе таких файлов в другие файловые системы.
Все выше сказанное не относится к точке, и в Linux часто ставят более одной точки в именах файлов. Такое понятие, как расширение имени файла (принятое в DOS), теряет при этом всякий смысл, хотя последние части имени, отделенные точками, используют для обозначения файлов особых типов (например, .tar.gz используют для обозначения сжатых архивов). Исполняемые и не исполняемые файлы в Linux распознаются не по расширениям имен файлов. Для этого существуют другие признаки. Точка имеет особое значение в именах файлов. Если она является первым символом имени, то данный файл считается скрытым для некоторых команд, например, он не показывается при выполнении команды ls.
В Linux различаются символы верхнего и нижнего регистра в именах файлов. Поэтому FILENAME.tar.gz и filename.tar.gz вполне могут существовать одновременно и являться именами разных файлов.
Каталоги
Каталоги
Файлы Linux группируются в каталоги, которые, в свою очередь, могут быть включены в другие каталоги. В результате получается иерархическая структура каталогов, начинающаяся с корневого каталога. Каждый подкаталог может содержать как отдельные файлы, так и подкаталоги.
В MS Windows каталоговая структура строится отдельно для каждого физического носителя и корневой каталог каждой каталоговой структуры обозначается какой-нибудь буквой латинского алфавита, что приводит к некоторому ограничению. В Linux строится единая каталоговая структура для всех носителей, и единственный корневой каталог этой структуры обозначается символом /. В эту единую каталоговую структуру можно подключить любое число каталогов, физически расположенных на разных носителях (смонтировать файловую систему или смонтировать носитель).
Имена каталогов строятся по тем же правилам, что и имена файлов. Каталоги в принципе ничем, кроме своей внутренней структуры не отличаются от обычных файлов, например, текстовых, так как являются в действительности файлами, содержащими список записей..
Полным именем файла (или путем к файлу) называется список имен вложенных друг в друга подкаталогов, начинающийся с корневого каталога и оканчивающийся собственно именем файла. При этом имена подкаталогов в этом списке разделяются тем же символом /, который служит для обозначения корневого каталога.
Кроме текущего каталога для каждого пользователя определен еще его домашний каталог — каталог, в котором пользователь имеет все права: может создавать и удалять файлы, менять права доступа к ним и т. д. В каталоговой структуре Linux домашние каталоги пользователей обычно размещаются в каталоге /home и имеют имена, совпадающие с именем пользователя. Когда пользователь входит в систему, текущим каталогом становится домашний каталог данного пользователя.
Основные каталоги в Linux:
/ — корневой каталог;
/bin — основные программы;
/boot — каталог с файлами, используемыми при загрузке системы;
/dev — каталог с файлами устройств;
/etc — файлы конфигурации;
/home — домашние каталоги пользователей, зарегистрированных в системе;
/lib — библиотеки и модули ядра;
/mnt — точки монтирования (подключения) дисковых накопителей (CD-ROM, Floppy), т.е. каталоги, которые будут указывать на разделы, накопители;
/proc — виртуальный каталог, в котором файлы хранят информацию о системных процессах;
/root — каталог администратора системы;
/sbin — основные системные программы;
/sys — средства для изменения конфигурации системы;
/tmp — каталог временных файлов;
/usr — каталог, в котором содержатся все установленные пользовательские программы, документация и т.д.;
/var — каталог с различными данными для программ.
Типы файлов
Типы файлов
Наряду с обычными файлами и каталогами, файлами с точки зрения Linuxявляются:
файлы физических устройств;
именованные каналы (named pipes);
гнезда (sockets);
символические ссылки (symlinks).
Файлы физических устройств
Файлы физических устройств
C точки зрения ОСLinux, все подключаемые к компьютеру устройства (жесткие и съемные диски, терминал, принтер, модем и т. д.), представляются файлами.
Взаимодействием с физическими устройствами в Linux управляют драйверы устройств, которые либо встроены в ядро, либо подключаются к нему как отдельные модули. Для взаимодействия с остальными частями операционной системы каждый драйвер образует коммуникационный интерфейс, который выглядит как файл. Большинство таких файлов для различных устройств располагаются в каталоге /dev.
Именованные каналы (pipes)
Именованные каналы (pipes)
Еще один тип специальных файлов — именованные каналы, или буферы FIFO (First In — First Out). Файлы этого типа служат в основном для того, чтобы организовать обмен данными между разными приложениями (pipe переводится с английского как труба).
Доменные гнезда (sockets)
Доменные гнезда (sockets)
Гнезда — это соединения между процессами, которые позволяют им взаимодействовать, не подвергаясь влиянию других процессов. Среди стандартных средств, использующих гнезда — система X Window, система печати и система syslog.
Символические ссылки (symlinks)
Символические ссылки (symlinks)
Помимо жестких ссылок в Linux имеется другой тип ссылок, так называемые символические ссылки. Эти представляются отдельными файлами — файлами типа символических ссылок. В отличие от жестких ссылок символические ссылки могут указывать на файлы, расположенные в другой файловой системе, например, на монтируемом носителе, или даже на другом компьютере.