Yandex
Обновить настройки cookies

Типы файлов Linux и файловые системы

ОС Linux поддерживает множество типов файлов, каждый из которых отображается с помощью уникального символа, что играет важную роль в управлении системой. В файловой системе Linux файлы классифицируются не только по содержимому, но и по их роли и поведению.

Что такое файловая система Linux

При установке ОС на базе Linux можно выбирать различные типы файловых систем, каждый со своими особенностями и командами: Ext, Ext (2, 3, 4), JFS, XFS, Btrfs, Swap.

Ext

Расширенная файловая система, предложенная в 1992 году. Это одна из первых filesystem Linux, разработанная частично на основе файловой системы UNIX. Целью ее создания было преодоление ограничений предыдущей системы MINIX. На сегодняшний день Ext практически не используется.

Ext2 - ее вторая версия, известная с 1993 года. Усовершенствованный аналог Ext, с улучшениями в производительности и объеме памяти. Поддерживает до 2 ТБ данных, но в настоящее время ее использование не рекомендуется.

Ext3 - третья версия от 2001 года. В отличие от Ext2, Ext3 записывает изменения в отдельный журнал до завершения операций, что помогает восстанавливать файлы после перезагрузки.

Ext4 - версия 2006 года. Эта файловая система устранила многие ограничения предыдущих версий и считается одной из самых популярных и широко используемых в дистрибутивах Linux.

JFS - файловая система, разработанная компанией IBM в 1990 году. Аббревиатура расшифровывается как Journaling File System. Отличается способностью быстро восстанавливать данные после сбоя питания и низким потреблением процессорных ресурсов.

XFS - высокопроизводительная файловая система, созданная в 1990 году, затем адаптированная для Linux. Хорошо работает с большими файлами, но менее эффективна при работе с файлами меньшего размера. Эта 64-битная журналируемая файловая система также доступна для Windows.

Btrfs - альтернатива, предложенная Oracle в 2009 году, конкурент Ext4. Обладает уникальными преимуществами и хорошей производительностью.

Swap - не является файловой системой в традиционном смысле, а позволяет системе использовать часть диска для расширения оперативной памяти.

Типы файлов

  • Обычные файлы (-). Самый популярный тип, включающий в себя документы, сценарии и исполняемые программы. В списке они обозначаются тире (-) в начале строки.
  • Каталоги (d) - содержат списки других файлов и служат для организации файловой системы в виде иерархии.
  • Символические ссылки (l) - ссылки на другие файлы или каталоги, предоставляют удобные пути доступа к ним и упрощают управление файлами.
  • Файлы символьных устройств (c) - указывают устройства, которые обрабатывают данные посимвольно (клавиатуры и мыши), и поддерживают операции ввода-вывода.
  • Файлы блочных устройств (b) - соответствуют устройствам, работающим с данными в блоках (жесткие диски и другие устройства для хранения информации), играющие ключевую роль в операциях чтения и записи.
  • Сокеты (s) - используются для создания соединений между процессами, как внутри одной системы, так и по сети, обеспечивают обмен данными.
  • FIFO (именованные каналы) (p) -каналы, работающие по принципу очереди, что позволяет одному процессу записывать данные, а другому - их считывать, обеспечивая межпроцессное взаимодействие.
Каждый тип выполняет специфическую задачу и несет в себе уникальные свойства, влияющие на производительность и функциональность системы.

Обычные файлы в Linux Filesystem

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

Для их создания в файловой системе ОС Linux можно использовать различные команды в зависимости от его предполагаемого содержимого. Самый простой способ - команда touch, которая создает пустой файл, если он еще не существовал до этого. Это удобно для создания файлов, которые будут заполнены позже, или файлов-маркеров в скриптах и программировании.

touch example.txt
Еще один способ - перенаправление. Например, с помощью. этой команды можно создать новый текстовый файл, перенаправив вывод команды или просто создавая файл без ввода данных.

echo "Hello, world!" > hi.txt
> newfile.txt

В списке каталога, отображаемом командой ls -l, обычные файлы обозначаются дефисом (-) в первом символе строки. Для проверки характеристик конкретного файла можно использовать команду ls -l, указав его имя в файловой системе Линукс.

ls -l example.txtВывод покажет дефис (-) в начале строки, за которым будут следовать права доступа, количество ссылок, имя владельца и группы, размер файла, дата последнего изменения и имя файла.

Каталоги

В структуре файловой системы Linux считаются ключевыми элементами, выполняющими роль контейнеров, в которых хранятся файлы и другие каталоги. Иерархическая структура упрощает управление данными и навигацию, позволяя пользователям и приложениям логично организовывать и разделять файлы.

Для создания нового каталога используется команда mkdir. Если путь не указан - подкаталог создаётся в текущем рабочем каталоге. С помощью mkdir можно одновременно создать несколько каталогов или каталог с вложенными подкаталогами.
mkdir new_directory
mkdir dir1 dir2 dir3
mkdir -p new_directory/subdir/another

В выводе команды каталоги обозначаются буквой "d" в начале строки, что отличает их от обычных файлов и других типов данных. Чтобы получить подробную информацию о каталоге, нужно использовать команду ls -ld с указанием имени каталога.

ls -ld new_directory/Вывод начинается с буквы "d", что указывает на каталог, а далее будут перечислены права доступа, количество объектов внутри, имя владельца, имя группы, размер, дата изменения и имя каталога.

Символические ссылки

Также известны как программные, представляют собой специальные файлы, которые указывают на другой файл или каталог в файловой системе Линукс. Символическая ссылка не содержит данных целевого файла, а лишь указывает на его местоположение. Это делает символические ссылки удобными для создания ярлыков и управления файлами без необходимости дублирования их содержимого.

Чтобы создать символическую ссылку используется команда ln -s. Сначала указывается целевой файл, а затем имя новой ссылки. В результате создаётся символическая ссылка, которая ссылается на целевой файл, находящийся в любом месте файловой системы. Этот процесс не перемещает и не копирует данные оригинального файла, а просто создает указатель на него.
ln -s new_file.txt simvollink_name.txtКроме того, можно создавать символические ссылки на каталоги, а не только на файлы. Это полезно для создания ссылок на библиотеки или включения каталогов в резервные копии без необходимости перемещать исходные данные.
ln -s /path/to/original/directory /path/to/simvollinkСимволические ссылки обозначаются буквой "l" (маленькая буква "L") в начале строки прав доступа в выводе команды ls -l. Понять, на что указывает ссылка, можно с помощью стрелки (->). Чтобы определить, является ли файл символической ссылкой, и увидеть, на какой файл она указывает в иерархии файловой системы Linux, можно использовать команду ls -l.
ls -l symlink_name.txtВ результате будет выведена строка, начинающаяся с буквы "l", указывающая, что это символическая ссылка, за которой следует путь к целевому файлу.

Файлы символьных устройств

Служат интерфейсом для взаимодействия с аппаратными устройствами, передающими данные посимвольно (клавиатуры, мышки или последовательные порты). Упрощают взаимодействие программ с оборудованием, предоставляя стандартизированный способ управления устройствами и выполнения операций ввода/вывода.

Большинство файлов символьных устройств создаются автоматически, управляются системой и ее драйверами, однако при тестировании драйверов или настройке пользовательских устройств можно создать такие файлы вручную с помощью команды mknod. Она требует прав root, так как взаимодействует напрямую с аппаратным обеспечением. В синтаксисе команды указывается тип устройства «c» для символьных устройств, а также старшие и младшие номера, которые идентифицируют драйвер и конкретное устройство.
mknod my_char_device c 180 31В этом примере старший номер «180» указывает на драйвер, а «31» - на конкретное устройство, которым он управляет.

Файлы символьных устройств можно распознать по букве «c» в начале строки прав доступа, отображаемой командой ls -l. Чтобы просмотреть характеристики таких файлов, включая их номера, используйте команду ls -l в каталоге /dev.

Файлы блочных устройств

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

Обычно создаются и управляются системой и ее драйверами. Для специфических задач, таких как настройка нового драйвера, файлы блочных устройств можно создать вручную с помощью команды mknod, которая требует указания типа устройства «b» для блочного устройства и прав root из-за прямого взаимодействия с аппаратным обеспечением.
mknod my_block_device b 8 0В этом примере старший номер «8» указывает на дисковые устройства, а «0» может означать первое устройство, например «/dev/sda».

В выводе команды ls -l файлы блочных устройств обозначаются буквой «b» в начале строки.

ls -l /dev/sdaЭта команда покажет свойства первого диска SCSI в вашей системе, который будет идентифицирован как блочное устройство.

Сокеты

Представляют собой точки для отправки и получения данных между процессами как в пределах одной системы, так и через сеть, облегчая как локальное, так и интернет-соединение.

Обычно создаются с использованием API, предоставляемых библиотеками для сетевого программирования. Вот пример кода на Python для создания сокета TCP/IP, который слушает локальный порт:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost', 8080))
sock.listen(1)
Код настраивает сервер для прослушивания входящих TCP-соединений на порту 8080.

В списке файлов сокеты обозначаются буквой «s». Обычно их можно найти в каталогах /tmp или /var/run, а также проверить с помощью команд для отображения состояния сети.
ls -l /path/to/socket

FIFO (именованные каналы)

Механизм асинхронной связи между процессами, позволяющий одному процессу отправлять данные другому без необходимости прямого соединения.

Для создания FIFO используется команда mkfifo. Создает именованный канал в файловой системе, доступ к которому может получить любой процесс, который знает его имя.
mkfifo my_pipesЭта команда создаёт FIFO с именем «my_pipes», который можно использовать для обмена данными между процессами.

В выводе команды ls -l FIFO обозначаются буквой «p» в строке прав доступа.

ls -l my_pipesЭта команда отобразит свойства FIFO с именем «my_pipes», подтверждая его статус как именованного канала.

Резюме

Каждый тип файла выполняет свою функцию и ведет себя по-разному, что влияет на организацию данных, взаимодействие и управление устройствами. Понимание этих различий позволяет оптимизировать рабочие процессы, повышать безопасность данных и улучшать обработку информации.
02 Sep 2024, 10:27:28