Yandex
Обновяване на предпочитанията за бисквитки

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

Linux поддържа много типове файлове, всеки от които е представен с уникален символ, който играе важна роля в управлението на системата. Във файловата система на Linux файловете се класифицират не само по тяхното съдържание, но и по тяхната роля и поведение.

Какво представлява файловата система на Linux

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

Ext

Разширена файлова система, предложена през 1992 г. Това е една от първите файлови системи на Linux, разработена отчасти на базата на файловата система на UNIX. Нейната цел беше да се преодолеят ограниченията на предишната система MINIX. Днес Ext почти не се използва.

Ext2 е втората му версия, позната от 1993 г. Това е подобрен аналог на Ext, с подобрения в производителността и капацитета за съхранение. Поддържа до 2 TB данни, но понастоящем използването му не се препоръчва.

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

Те се използват за съхраняване на голямо разнообразие от данни: текстови документи, изпълними програми, мултимедия и системни конфигурации. За разлика от специализираните файлове, които изпълняват системни задачи, обикновените файлове съдържат предимно потребителски данни.

За да ги създадете във файловата система на Linux, можете да използвате различни команди в зависимост от предназначението им. Най-простият начин е командата touch, която създава празен файл, ако той не е съществувал преди това. Това е полезно за създаване на файлове, които ще бъдат попълнени по-късно, или на маркерни файлове при писане на скриптове и програмиране.
touch example.txt
Друг метод е пренасочването. Например, с тази команда можете да създадете нов текстов файл, като пренасочите изхода на командата или просто създадете файл без вход.
echo "Hello, world!" > hi.txt
> newfile.txt

В списъка на директориите, показван от командата ls -l, общите файлове се обозначават с дефис (-) в първия символ на реда. За да проверите характеристиките на определен файл, можете да използвате командата ls -l, като посочите името му във файловата система на Linux.
ls -l example.txtИзходът ще покаже тире (-) в началото на реда, последвано от разрешенията, броя на връзките, името на собственика и групата, размера на файла, датата на последната промяна и името на файла.

Каталози

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

Командата mkdir се използва за създаване на нова директория. Ако не е посочен път, поддиректорията се създава в текущата работна директория. С помощта на mkdir можете да създадете едновременно няколко директории или директория с вложени поддиректории.
mkdir new_directory
mkdir dir1 dir2 dir3
mkdir -p new_directory/subdir/another

В изхода на командата директориите се обозначават с „d“ в началото на реда, което ги отличава от обикновените файлове и други типове данни. За да получите подробна информация за дадена директория, използвайте командата ls -ld с името на директорията.

ls -ld new_directory/Изходът започва с буквата „d“, указваща директорията, и след това изброява правата на достъп, броя на обектите в нея, името на собственика, името на групата, размера, датата на модификация и името на директорията.

Символични препратки

Познати още като програмни връзки, те са специални файлове, които сочат към друг файл или директория във файловата система на Linux. Символичната връзка не съдържа данните на целевия файл, а само посочва неговото местоположение. Това прави символните връзки удобни за създаване на преки пътища и управление на файлове, без да се налага да се дублира съдържанието им.

За създаване на символична връзка се използва командата 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 устройство във вашата система, което ще бъде идентифицирано като блоково устройство.

Sockets

Представляват точки за изпращане и получаване на данни между процеси както в рамките на една и съща система, така и в мрежа, като улесняват както локалната, така и интернет свързаността.

Обикновено се създават с помощта на 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 (именувани канали)

Асинхронен механизъм за комуникация между процеси, който позволява на един процес да изпраща данни на друг, без да е необходима директна връзка.

Командата mkfifo се използва за създаване на FIFO. Създава именуван канал във файловата система, който може да бъде достъпен от всеки процес, който знае името му.
mkfifo my_pipesТази команда създава FIFO с име „my_pipes“, което може да се използва за обмен на данни между процесите.

В изхода на командата ls -l FIFO се обозначават с „p“ в реда за разрешения.

ls -l my_pipesТази команда ще покаже свойствата на FIFO с име „my_pipes“, потвърждавайки състоянието му като именуван канал.

Резюме

Всеки тип файл изпълнява различна функция и се държи по различен начин, което се отразява на организацията на данните, комуникацията и управлението на устройствата. Разбирането на тези разлики ви позволява да оптимизирате работните процеси, да повишите сигурността на данните и да подобрите обработката на информацията.
02 Sep 2024, 10:27:28