Разное

Работа с файлами linux с: Команды Linux для работы с файлами

Команды Linux для работы с файлами

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

В этой статье мы рассмотрим самые часто используемые команды Linux для работы с файлами и каталогами, после их освоения терминал больше не будет казаться таким непонятным и объемлемым. Вот какие команды будут нас сегодня интересовать:

  • ls — список файлов в директории;
  • cd — переход между директориями;
  • rm — удалить файл;
  • rmdir — удалить папку;
  • mv — переместить файл;
  • cp — скопировать файл;
  • mkdir — создать папку;
  • ln — создать ссылку;
  • chmod — изменить права файла;
  • touch — создать пустой файл.

А теперь перейдем к подробному рассмотрению всех этих команд.

1. ls — просмотр содержимого папки

Команда ls позволяет вывести список файлов заданной папки, по умолчанию, будет выведен список файлов текущей папки:

ls

Вы можете вывести список файлов из всех подкаталогов рекурсивно, для этого используйте опцию -R:

ls -R

Чтобы вывести список файлов нужной папки, вы можете передать ее адрес утилите, например, /home:

ls /home

Чтобы получить больше информации и вывести все имена файлов в виде списка используйте опцию -l:

ls -l /home/

2. cd — изменить папку

Команда cd позволяет изменить текущую папку на другую. По умолчанию, текущей считается домашняя папка, например, cd Desktop меняет папку на рабочий стол, если вы выполните ее из домашнего каталога:

cd Desktop

Вы также можете указать полный путь к папке:

cd /usr/share/

Команда cd . . переходит в папку, которая находится выше на одну в файловой системе:

cd ..

Вы также можете вернуться в предыдущую рабочую папку:

cd -

3. rm — удалить файлы

Команда rm позволяет удалить файл. Будьте очень осторожны с ней, она не будет спрашивать подтверждения:

rm file

Например, rm file удалит файл с именем file, который находится в текущей папке. Как и в предыдущих вариантах, вы можете указать полный путь к файлу linux. Например:

rm /usr/share/file

Если вы хотите удалить папку, то нужно использовать опцию -r. Она включает рекурсивное удаление всех файлов и папок на всех уровнях вложенности:

rm -r /home/user/photo/

Будьте осторожны, потому что эта команда удаляет файлы безвозвратно.

4. rmdir — удалить папку

Команда rmdir позволяет удалить пустую папку. Например, команда rmdir directory удалит папку directory, которая находится в текущей папке:

rmdir directory

Если вам нужно удалить папку с файлами, то нужно использовать утилиту rm вместе с опцией -r.

5. mv — перемещение файлов

Команда mv перемещает файл в новое место. Она также может использоваться для переименования файлов. Например, mv file newfile переименует файл file в newfile:

mv file newfile

Чтобы переместить файл в другую папку нужно указать путь к ней, например, переместим файл file в папку /home/user/tmp/

mv file /home/user/tmp/

6. cp — копирование файлов

Эта cp и mv — это похожие команды linux для работы с файлами. Они работают аналогичным образом, только исходный файл остается на своем месте.

cp file newfile

Вы также можете рекурсивно скопировать всю папку с помощью команды cp -r. Эта команда скопирует всю папку вместе со всеми файлами и вложенными папками в новое место. Например, скопируем папку /etc/:

cp -r /etc /etc_back

7. mkdir — создать папку

Команда mkdir позволяет создать новую папку mkdir test создаст папку в текущем каталоге:

mkdir test

Если нужно создать папку в другом каталоге, укажите полный путь к нему:

mkdir /home/user/test

8.

ln — создание ссылок

Утилита ln позволяет создавать жесткие и символические ссылки на файлы или папки. Для создания символической ссылки используется опция -s. Например, вы создадим ссылку на папку с загрузками:

ln -s /home/user/Downloads/ /home/user/test/

Для создания жесткой ссылки никаких опций задавать не нужно:

ln /home/user/Downloads/ /home/user/test/

9. chmod — изменить права

chmod позволяет изменить права доступа к файлам. Например, chmod +x script.sh добавляет флаг исполняемости к файлу script.sh:

chmod +x  script.sh

Чтобы убрать флаг исполняемый используйте опцию -x:

chmod -x script.sh

Подробнее о том, как работают разрешения для файлов смотрите в статье права доступа к файлам в Linux.

10. touch — создать файл

Команда touch создает пустой файл. Например, touch file создаст пустой файл в текущей папке с именем file:

touch file

Для создания файлов через терминал существует еще несколько команд, они рассмотрены в статье как создать файл в linux.

11. mc

Работа с файлами Linux через терминал может выполняться не только с помощью обычных консольных команд, каждая из которых выполняет только определенное действие. Вы можете использовать полнофункциональный файловый менеджер с псевдографическим интерфейсом на основе ncurses. Midnight Commander — это файловый менеджер, который можно использовать прямо в терминале. Для установки mc в Ubuntu выполните:

sudo apt install mc

После завершения установки достаточно выполнить команду mc:

mc

Используйте клавиши со стрелками для перемещения по файлах, Tab для перехода на другую панель, Alt+1 для просмотра справки и Alt+2 для вывода меню:

Если терминальное окружение поддерживает мышь, то вы можете ее использовать в Midnight Commander.

Выводы

В этой статье мы рассмотрели как выполняется работа с файлами и каталогами в linux, с помощью терминала. Когда вы освоите все эти команды, вы сможете сделать большинство основных действий в терминале. А как часто вы пользуетесь терминалом? Используете его для работы с файлами? Напишите в комментариях!

Операции с файлами и каталогами Linux: как выполнять правильно

Как известно, работа в Linux базируется на операциях с файлами и каталогами: их поиск, перемещение, просмотр и копирование. Поэтому подобные навыки необходимы каждому пользователю, который хочет успешно работать в ОС Linux. Эта статья поможет вам разобраться во всех этих вопросах и чувствовать себя уверенно в «общении» с Линуксом.

Основные операции проводятся в консольном режиме

Для создания директории просто пропишите «mkdir» и название папки после неё. Удаление происходит аналогичным образом, только вместо «mkdir» указываете «rmdir».

Узнать имя текущей директории вы можете, использовав «pwd». Для вывода на экран её содержимого воспользуйтесь «ls». Выглядит это таким образом:

pwd /home/a/newdirectory
ls /home/a/newdirectory

После команды прописывайте путь к нужному вам каталогу.

Чтобы просмотреть всю информацию об интересующей вас директории, используйте ключ –l для «ls».

Ls выводит содержимое папки в алфавитном порядке. Если вам нужно отсортировать его по дате или в обратном порядке, используйте ключи –t и –lrt соответственно.

Что же касается работы с файлами, то она заключается в трёх простых действиях:

  • копирование;
  • перемещение;
  • удаление.

Копирование осуществляется командой «cp», переместить — «mv», а удалить — «rm».

Просто пропишите команду и полное имя файла вместе с его расширением, над которым вы хотите произвести какое-либо действие. Например:

cp file1.bkp

При перемещении также указывайте директорию назначения:

mv file1.bkp newdirectory

Теперь разберёмся, как выполнять поиск в Linux. В этом нам поможет команда «find», которая позволяет выполнить поиск по всем возможным критериям: по типу, владельцу, дате или последнему обращению. Например:

find .-name «myfile»

Также можно осуществить поиск по наличию какого-нибудь конкретного символа в названии. Попробуем найти все файлы, в имени которых содержится буква «z»:

find .-name «*z*»

Чтобы уточнить критерии поиска по типу, указывайте ключи: -f (файлы), -d (директории):

find .-type f

Чтобы осуществить поиск по заданному размеру, введите:

find .-size и дальше число, соответствующее размеру. Добавляя «c» или «k», вы можете задать значение в байтах или килобайтах соответственно.

Сжатие осуществляется при помощи «gzip» и «bzip2». По своим функциям они абсолютно идентичны, за исключением того, что gzip позволяет сохранить имя, а также метку времени.

Чтобы создать архив, воспользуйтесь командой «tar». Для расширенной работы прописывайте ключи:

-c — создание архива;
-x — распаковка;
-v — вывод списка архивируемых фалов;
-z — сжимать с помощью gzip;
-j — bzip2 сжатие.

Для извлечения данных из архива пригодится команда cpio.

Теперь вы знакомы с основами работы с файлами и каталогами. Оставляйте свой отзыв об этой статье и задавайте все интересующие вас вопросы по теме.

Classic SysAdmin: объяснение файловой системы Linux

ЧТЕНИЕ 12 МИН

Фонд Linux | 27 февраля 2022 г.

Это классическая статья, написанная Полом Брауном из архивов Linux.com. Дополнительные полезные советы и приемы системного администратора см. в нашем бесплатном вводном курсе Linux .

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

Видите ли, тогда Linux не был интуитивно понятной и удобной системой, как сегодня. Приходилось много читать. Вы должны были знать кое-что о частоте вашего ЭЛТ-монитора и входах и выходах вашего шумного коммутируемого модема, среди сотен других вещей. Вскоре я понял, что мне нужно потратить некоторое время на то, чтобы понять, как организованы каталоги и каковы все их экзотические имена, такие как /etc (не для разных файлов), /usr  (не для пользовательских файлов) и / bin   (не мусорное ведро).

Это руководство поможет вам освоиться быстрее, чем я.

Структура

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

Фактически, это название первого инструмента, который вы установите, чтобы помочь вам в пути:  дерево . Если вы используете Ubuntu или Debian, вы можете сделать:

 sudo apt install tree
 

В Red Hat или Fedora выполните:

 sudo dnf install tree
 

Для SUSE/openSUSE используйте zypper :

 дерево установки sudo zypper
 

Для Arch-подобных дистрибутивов (Manjaro, Antergos и т. д.) используйте:

 sudo pacman -S tree
 

… и так далее.

После установки оставайтесь в окне терминала и запустите tree следующим образом:

 tree /
 

/  в приведенной выше инструкции относится к корневому каталогу  . Корневой каталог — это тот, от которого ответвляются все остальные каталоги. Когда вы запустите tree и скажете, чтобы он начинался с / , вы увидите все дерево каталогов, все каталоги и все подкаталоги во всей системе со всеми их файлами.

Если вы используете свою систему в течение некоторого времени, это может занять некоторое время, потому что, даже если вы не создали много файлов самостоятельно, система Linux и ее приложения всегда регистрируют, кэшируют и хранят временные файлы. Количество записей в файловой системе может расти довольно быстро.

Однако не расстраивайтесь. Вместо этого попробуйте следующее:

 дерево -L 1 /
 

И вы должны увидеть то, что показано на рисунке 1.

Инструкцию выше можно перевести как « показать мне только 1-й уровень дерева каталогов, начиная с / (root) ». Параметр -L   сообщает tree , на сколько уровней вниз вы хотите увидеть.

Большинство дистрибутивов Linux имеют такой же или очень похожий макет, как на изображении выше. Это означает, что даже если вы сейчас запутались, освойте это, и вы будете иметь дело с большинством, если не со всеми, установками Linux во всем мире.

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

Пока мы просматриваем каждый из них, вы можете просмотреть их содержимое с помощью  лс .

Каталоги

Сверху вниз вы видите следующие каталоги.

/bin

/bin — это каталог, содержащий bin aries, то есть некоторые приложения и программы, которые вы можете запускать. В этом каталоге вы найдете упомянутую выше программу ls , а также другие основные инструменты для создания и удаления файлов и каталогов, их перемещения и т. д. Есть еще bin  каталоги в других частях дерева файловой системы, но мы поговорим о них через минуту.

/boot

Каталог /boot содержит файлы, необходимые для запуска вашей системы. Я должен это говорить? Ладно, скажу: НЕ ТРОГАТЬ! . Если вы испортите один из файлов здесь, вы не сможете запустить свой Linux, и его будет сложно восстановить. С другой стороны, не слишком беспокойтесь о случайном разрушении вашей системы: для этого у вас должны быть привилегии суперпользователя.

/dev

/dev содержит dev ледяных файла. Многие из них генерируются во время загрузки или даже на лету. Например, если вы подключите новую веб-камеру или USB-накопитель к своему компьютеру, здесь автоматически появится запись о новом устройстве.

/etc

/etc  это каталог, в котором имена начинают путаться. /etc  получил свое название от самых ранних Unix-систем, и это буквально было «и так далее», потому что это была свалка для системных файлов, которые администраторы не знали, куда еще поместить.

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

/home

/home  вы найдете личные каталоги ваших пользователей. В моем случае под /home есть два каталога: /home/paul , в котором находятся все мои вещи; и /home/guest на случай, если кому-то понадобится мой компьютер.

/lib

/lib  это место, где живут lib . Библиотеки — это файлы, содержащие код, который могут использовать ваши приложения. Они содержат фрагменты кода, которые приложения используют для рисования окон на рабочем столе, управления периферийными устройствами или отправки файлов на жесткий диск.

В файловой системе разбросаны другие каталоги lib , но этот, тот, что висит непосредственно на / , особенный тем, что, среди прочего, содержит все важные модули ядра. Модули ядра — это драйверы, которые заставляют работать такие вещи, как видеокарта, звуковая карта, Wi-Fi, принтер и т. д.

/media

В каталог /media будет автоматически подключаться внешнее хранилище, когда вы подключаете его и пытаетесь получить к нему доступ. В отличие от большинства других элементов в этом списке, /media  не восходит к 1970-м годам, главным образом потому, что вставка и обнаружение хранилищ (флеш-накопителей, жестких дисков USB, SD-карт, внешних твердотельных накопителей и т. д.) на лету во время работы компьютера является относительно новой вещью.

/mnt

Каталог /mnt , однако, немного пережиток былых дней. Здесь вы вручную монтируете устройства хранения или разделы. В настоящее время используется не так часто.

 

/опция

/opt  часто находится в том месте, где иногда размещается программное обеспечение, которое вы компилируете (то есть вы создаете самостоятельно из исходного кода, а не устанавливаете из репозиториев дистрибутива). Приложения будут находиться в каталоге /opt/bin , а библиотеки — в каталоге /opt/lib .

Небольшое отступление: еще одно место, куда попадают приложения и библиотеки, это  /usr/local . При установке программного обеспечения здесь также будет  /usr/local/bin  и  /usr/local/lib  директории. Что определяет, какое программное обеспечение будет использоваться, так это то, как разработчики настроили файлы, управляющие процессом компиляции и установки.

/proc

/proc , например /dev  , – это виртуальный каталог. Он содержит информацию о вашем компьютере, такую ​​как информация о вашем процессоре и ядре, на котором работает ваша система Linux. Как и в случае  /dev , файлы и каталоги создаются при запуске компьютера или на лету, когда ваша система работает и что-то меняется.

/root

/root — это домашний каталог суперпользователя (также известного как «Администратор») системы. Он отделен от домашних каталогов остальных пользователей, ПОТОМУ ЧТО ВЫ НЕ ДОЛЖНЫ К НЕМУ ПРИКАСАТЬСЯ. Храните свои собственные вещи в своих собственных каталогах, люди.

/run

/run — еще один новый каталог. Системные процессы используют его для хранения временных данных по своим гнусным причинам. Это еще одна из тех папок, которые НЕ ТРОГАТЬ.

/sbin

/sbin аналогичен /bin , но содержит приложения, которые понадобятся только суперпользователю (отсюда и s ). Вы можете использовать эти приложения с помощью команды sudo , которая временно предоставляет вам права суперпользователя во многих дистрибутивах. /sbin  обычно содержит инструменты, которые могут устанавливать, удалять и форматировать данные. Как вы понимаете, некоторые из этих инструкций могут привести к летальному исходу при неправильном использовании, поэтому обращайтесь с ними осторожно.

/usr

В каталоге /usr изначально хранились домашние каталоги пользователей на заре UNIX. Однако теперь /home  – это место, где пользователи хранили свои данные, как мы видели выше. В наши дни /usr  содержит мешанину из каталогов, которые, в свою очередь, содержат приложения, библиотеки, документацию, обои, значки и длинный список других материалов, которые должны использоваться совместно приложениями и службами.

Вы также найдете  bin , sbin и lib каталоги в /usr . Чем они отличаются от своих корневищных собратьев? В наше время не так много. Первоначально каталог /bin (зависший от корня) должен был содержать очень простые команды, такие как ls , mv и rm ; тот тип команд, который будет предустановлен во всех установках UNIX/Linux, необходимый минимум для запуска и обслуживания системы. /usr/bin  с другой стороны, будет содержать материалы, которые пользователи будут устанавливать и запускать, чтобы использовать систему в качестве рабочей станции, такие как текстовые процессоры, веб-браузеры и другие приложения.

Но многие современные дистрибутивы Linux просто помещают все в /usr/bin и имеют /bin , указывающую на /usr/bin , на тот случай, если полное удаление приведет к поломке. Таким образом, в то время как Debian, Ubuntu и Mint по-прежнему сохраняют /bin и /usr/bin /sbin и /usr/sbin ) отдельно; другие, такие как Arch и его производные, имеют только один «настоящий» каталог для двоичных файлов, /usr/bin , а остальные или *bin — это «поддельные» каталоги, указывающие на /usr/bin .

/srv

Каталог /srv содержит данные для серверов. Если вы запускаете веб-сервер из своего Linux-компьютера, ваши HTML-файлы для ваших сайтов будут находиться в /srv/http (или /srv/www ). Если бы вы использовали FTP-сервер, ваши файлы находились бы по адресу /srv/ftp .

/sys

/sys  это еще один виртуальный каталог, такой как /proc и /dev , а также содержит информацию с устройств, подключенных к вашему компьютеру.

В некоторых случаях вы также можете манипулировать этими устройствами. Я могу, например, изменить яркость экрана моего ноутбука, изменив значение, хранящееся в /sys/devices/pci0000:00/0000:00:02.0/drm/card1/card1-eDP-1/intel_backlight/ яркость  файл (на вашем компьютере, вероятно, будет другой файл). Но для этого вы должны стать суперпользователем. Причина этого, как и во многих других виртуальных каталогах, заключается в возне с содержимым и файлами в /sys  может быть опасным, и вы можете повредить свою систему. НЕ ПРИКАСАЙТЕСЬ, пока не убедитесь, что понимаете, что делаете.

/tmp

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

Вы также можете использовать  /tmp для хранения собственных временных файлов.  /tmp  – это один из немногих каталогов, зависающих от /, с которыми вы можете взаимодействовать, не становясь суперпользователем.

/var

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

Как бы то ни было, /var  содержит такие вещи, как журналы, в подкаталогах /var/log  . Журналы — это файлы, в которых регистрируются события, происходящие в системе. Если в ядре что-то выйдет из строя, это будет зарегистрировано в файле в  /вар/журнал ; если кто-то попытается взломать ваш компьютер извне, ваш брандмауэр также зарегистрирует эту попытку здесь. Он также содержит катушек для задач. Эти «задачи» могут быть заданиями, которые вы отправляете на общий принтер, когда вам приходится ждать, потому что другой пользователь печатает длинный документ, или почтой, ожидающей доставки пользователям в системе.

В вашей системе могут быть еще каталоги, которые мы не упомянули выше. На скриншоте, например, есть /snap  директория. Это потому, что снимок был сделан в системе Ubuntu. В Ubuntu недавно были включены пакеты моментальных снимков как способ распространения программного обеспечения. Каталог /snap содержит все файлы и программное обеспечение, установленное из снимков.

Копаем глубже

Это корневой каталог, но многие подкаталоги ведут к собственному набору файлов и подкаталогов. Рисунок 2 дает вам общее представление о том, как выглядит базовое дерево файловой системы (изображение любезно предоставлено Полом Гарднером по лицензии CC By-SA), а в Википедии есть разбивка с кратким описанием того, для чего используется каждый каталог.

Для самостоятельного исследования файловой системы используйте команду cd :

 cd
 

приведет вас в каталог по вашему выбору ( cd  обозначает изменить каталог .

Если вы запутались,

 pwd 

всегда скажет вам, где вы (

pwd рабочий каталог 0s для 19 0stand ).А также

 кд
 

без опций и параметров вернет вас в ваш собственный домашний каталог, где все безопасно и уютно.

Наконец,

 кд..
 

поднимет вас на один уровень выше, приблизив вас на один уровень к корневому каталогу / . Если вы находитесь в /usr/share/wallpapers и запустите cd .. , вы перейдете на /usr/share .

Чтобы увидеть, что содержит каталог, используйте

 ls
 

или просто

 лс
 

, чтобы просмотреть содержимое каталога, в котором вы сейчас находитесь.

И, конечно же, у вас всегда есть tree , чтобы получить представление о том, что находится в каталоге. Попробуйте на /usr/share — там много интересного.

Заключение

Несмотря на то, что между дистрибутивами Linux есть небольшие различия, расположение их файловых систем, к счастью, похоже. Настолько, что вы могли бы сказать: если вы знаете одного, вы знаете их всех. И лучший способ узнать файловую систему — изучить ее. Итак, продолжайте с tree , ls и cd  на неизведанную территорию.

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

Готовы продолжить знакомство с Linux? Ознакомьтесь с нашим бесплатным вводным курсом по Linux!

Введение в файловые системы Linux

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

Каждый компьютер общего назначения должен хранить данные различных типов на жестком диске (HDD) или его эквиваленте, например, на USB-накопителе. На это есть несколько причин. Во-первых, оперативная память теряет свое содержимое при выключении компьютера. Существуют энергонезависимые типы ОЗУ, которые могут поддерживать хранящиеся там данные после отключения питания (например, флэш-память, которая используется в USB-накопителях и твердотельных накопителях), но флэш-память намного дороже, чем стандартная энергозависимая ОЗУ, такая как DDR3 и другие подобные типы.

Вторая причина, по которой данные необходимо хранить на жестких дисках, заключается в том, что даже стандартная оперативная память все же дороже дискового пространства. Стоимость ОЗУ и диска быстро снижается, но ОЗУ по-прежнему лидирует по стоимости байта. Быстрый расчет стоимости байта, основанный на стоимости 16 ГБ ОЗУ по сравнению с жестким диском емкостью 2 ТБ, показывает, что ОЗУ примерно в 71 раз дороже за единицу, чем жесткий диск. Типичная стоимость оперативной памяти сегодня составляет около 0,0000000043743750 долларов за байт.

Для краткой исторической заметки, чтобы представить нынешние затраты на ОЗУ в перспективе, в самые первые дни вычислений один тип памяти был основан на точках на экране ЭЛТ. Это было очень дорого, около 1 доллара за бит !

Определения

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

Я попытаюсь определить различные значения слова «файловая система» на основе того, как я наблюдал его использование в различных обстоятельствах. Обратите внимание, что, пытаясь соответствовать стандартным «официальным» значениям, я намерен определить термин на основе его различных вариантов использования. Эти значения будут рассмотрены более подробно в следующих разделах этой статьи.

  1. Вся структура каталогов Linux, начиная с верхнего (/) корневого каталога.
  2. Определенный тип формата хранения данных, например EXT3, EXT4, BTRFS, XFS и т. д. Linux поддерживает почти 100 типов файловых систем, включая как очень старые, так и новейшие. Каждый из этих типов файловых систем использует свои собственные структуры метаданных для определения того, как данные хранятся и доступны.
  3. Раздел или логический том, отформатированный с использованием файловой системы определенного типа, который можно смонтировать в указанной точке монтирования в файловой системе Linux.

Основные функции файловой системы

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

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

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

Для файловых систем также требуется интерфейс прикладного программирования (API), обеспечивающий доступ к вызовам системных функций, управляющих объектами файловой системы, такими как файлы и каталоги. API обеспечивают такие задачи, как создание, перемещение и удаление файлов. Он также предоставляет алгоритмы, которые определяют такие вещи, как расположение файла в файловой системе. Такие алгоритмы могут учитывать такие цели, как скорость или минимизация фрагментации диска.

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

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


Рисунок 1: Программная реализация двухкомпонентной файловой системы Linux.

Первая часть этой реализации, состоящей из двух частей, — виртуальная файловая система Linux. Эта виртуальная файловая система предоставляет ядру и разработчикам единый набор команд для доступа ко всем типам файловых систем. Программное обеспечение виртуальной файловой системы вызывает специальный драйвер устройства, необходимый для взаимодействия с различными типами файловых систем. Драйверы устройств, специфичные для файловой системы, являются второй частью реализации. Драйвер устройства интерпретирует стандартный набор команд файловой системы как специфичный для типа файловой системы раздела или логического тома.

Структура каталогов

Будучи обычно очень организованной Девой, я предпочитаю хранить вещи небольшими организованными группами, а не в одном большом ведре. Использование каталогов помогает мне хранить и затем находить нужные файлы, когда я их ищу. Каталоги также известны как папки, потому что их можно рассматривать как папки, в которых хранятся файлы по аналогии с физическим рабочим столом.

В Linux и многих других операционных системах каталоги могут быть структурированы в виде древовидной иерархии.

Структура каталогов Linux четко определена и задокументирована в стандарте иерархии файловой системы Linux (FHS). Ссылка на эти каталоги при доступе к ним осуществляется с помощью последовательного использования более глубоких имен каталогов, соединенных косой чертой (/), таких как /var/log и /var/spool/mail. Это так называемые пути.

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

Каталог Описание
/ (корневая файловая система) Корневая файловая система — это каталог верхнего уровня файловой системы. Он должен содержать все файлы, необходимые для загрузки системы Linux до того, как будут смонтированы другие файловые системы. Он должен включать все необходимые исполняемые файлы и библиотеки, необходимые для загрузки остальных файловых систем.
После загрузки системы все остальные файловые системы монтируются в стандартные, четко определенные точки монтирования как подкаталоги корневой файловой системы.
/ящик Каталог /bin содержит исполняемые файлы пользователя.
/ботинок Содержит статический загрузчик, исполняемый файл ядра и файлы конфигурации, необходимые для загрузки компьютера с Linux.
/dev Этот каталог содержит файлы устройств для каждого аппаратного устройства, подключенного к системе. Это не драйверы устройств, а файлы, представляющие каждое устройство на компьютере и облегчающие доступ к этим устройствам.
/и т. д. Содержит файлы конфигурации локальной системы для главного компьютера.
/дом Хранилище домашнего каталога для пользовательских файлов. У каждого пользователя есть подкаталог в /home.
/библиотека Содержит файлы общей библиотеки, необходимые для загрузки системы.
/носитель Место для установки внешних съемных носителей, таких как флэш-накопители USB, которые могут быть подключены к хосту.
/ шт. Временная точка монтирования для обычных файловых систем (например, на несъемных носителях), которую можно использовать, пока администратор восстанавливает файловую систему или работает с ней.
/опция Необязательные файлы, такие как прикладные программы, поставляемые поставщиком, должны находиться здесь.
/ корень Это не корневая (/) файловая система. Это домашний каталог для пользователя root.
/сбин Системные двоичные файлы. Это исполняемые файлы, используемые для системного администрирования.
/tmp Временный каталог. Используется операционной системой и многими программами для хранения временных файлов. Пользователи также могут временно хранить файлы здесь. Обратите внимание, что файлы, хранящиеся здесь, могут быть удалены в любое время без предварительного уведомления.
/USR Это общедоступные файлы только для чтения, включая исполняемые двоичные файлы и библиотеки, справочные файлы и другие типы документации.
/вар Здесь хранятся файлы переменных данных. Это может включать такие вещи, как файлы журналов, MySQL и другие файлы базы данных, файлы данных веб-сервера, почтовые ящики и многое другое.
Таблица 1: Верхний уровень иерархии файловой системы Linux.

Каталоги и их подкаталоги, показанные в Таблице 1, вместе с их подкаталогами, имеющими бирюзовый фон, считаются неотъемлемой частью корневой файловой системы. То есть их нельзя создать как отдельную файловую систему и смонтировать во время запуска. Это связано с тем, что они (в частности, их содержимое) должны присутствовать во время загрузки, чтобы система загружалась правильно.

Каталоги /media и /mnt являются частью корневой файловой системы, но они никогда не должны содержать никаких данных. Скорее, это просто временные точки монтирования.

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

Обязательно обратитесь к официальной веб-странице стандарта иерархии файловой системы Linux (FHS) для получения подробной информации о каждом из этих каталогов и их многочисленных подкаталогах. В Википедии также есть хорошее описание FHS. Этот стандарт должен соблюдаться как можно точнее, чтобы обеспечить операционную и функциональную согласованность. Независимо от типов файловых систем, используемых на хосте, эта иерархическая структура каталогов одинакова.

Унифицированная структура каталогов Linux

В некоторых операционных системах ПК, отличных от Linux, при наличии нескольких физических жестких дисков или нескольких разделов каждому диску или разделу назначается буква диска. Необходимо знать, на каком жестком диске находится файл или программа, например C: или D:. Затем вы вводите букву диска в виде команды, D: , например, чтобы перейти на диск D:, а затем используете команду cd , чтобы перейти в правильный каталог, чтобы найти нужный файл. Каждый жесткий диск имеет свое собственное отдельное и полное дерево каталогов.

Файловая система Linux объединяет все физические жесткие диски и разделы в единую структуру каталогов. Все начинается сверху — с корневого (/) каталога. Все остальные каталоги и их подкаталоги расположены в одном корневом каталоге Linux. Это означает, что существует только одно дерево каталогов, в котором можно искать файлы и программы.

Это может работать только потому, что файловая система, такая как /home, /tmp, /var, /opt или /usr, может быть создана на отдельных физических жестких дисках, другом разделе или другом логическом томе из / (корневого ) файловая система, а затем монтируется в точку монтирования (каталог) как часть корневого дерева файловой системы. Даже съемные диски, такие как флэш-накопитель USB или внешний жесткий диск USB или ESATA, будут подключены к корневой файловой системе и станут неотъемлемой частью этого дерева каталогов.

Одной из веских причин для этого является переход с одной версии дистрибутива Linux на другую или переход с одного дистрибутива на другой. В целом, помимо любых утилит обновления, таких как dnf-upgrade в Fedora, целесообразно время от времени переформатировать жесткий диск (диски), содержащие операционную систему, во время обновления, чтобы полностью удалить весь мусор, который накопился с течением времени. Если /home является частью корневой файловой системы, она также будет переформатирована, и тогда ее придется восстанавливать из резервной копии. Имея /home в качестве отдельной файловой системы, она будет известна программе установки как отдельная файловая система, и ее форматирование можно пропустить. Это также может относиться к /var, где хранятся база данных, почтовые ящики, веб-сайт и другие переменные пользовательские и системные данные.

Существуют и другие причины сохранения определенных частей дерева каталогов Linux в виде отдельных файловых систем. Например, давным-давно, когда я еще не знал о потенциальных проблемах, связанных с тем, что все необходимые каталоги Linux являются частью / (корневой) файловой системы, мне удалось заполнить свой домашний каталог большим количеством очень большие файлы. Поскольку ни каталог /home, ни каталог /tmp не были отдельными файловыми системами, а были просто подкаталогами корневой файловой системы, вся корневая файловая система заполнялась. У операционной системы не оставалось места для создания временных файлов или расширения существующих файлов данных. Сначала прикладные программы начали жаловаться, что нет места для сохранения файлов, а потом очень странно начала себя вести и сама ОС. Загрузка в однопользовательском режиме и удаление проблемных файлов в моем домашнем каталоге позволили мне снова начать работу. Затем я переустановил Linux, используя довольно стандартную настройку нескольких файловых систем, и смог предотвратить повторение полного сбоя системы.

Однажды у меня была ситуация, когда хост Linux продолжал работать, но не позволял пользователю войти в систему с помощью рабочего стола с графическим интерфейсом. Я смог войти в систему с помощью интерфейса командной строки (CLI) локально, используя одну из виртуальных консолей, и удаленно, используя SSH. Проблема заключалась в том, что файловая система /tmp была заполнена, и некоторые временные файлы, необходимые для рабочего стола с графическим интерфейсом, не могли быть созданы во время входа в систему. Поскольку вход в CLI не требовал создания файлов в /tmp, нехватка места не помешала мне войти в систему с помощью CLI. В этом случае каталог /tmp был отдельной файловой системой, и в группе томов, частью которой был логический том /tmp, было достаточно места. Я просто расширил логический том /tmp до размера, который соответствовал моему свежему пониманию объема временного файлового пространства, необходимого на этом хосте, и проблема была решена. Обратите внимание, что это решение не требовало перезагрузки, и как только файловая система /tmp была увеличена, пользователь смог войти на рабочий стол.

Другая ситуация произошла, когда я работал администратором лаборатории в одной крупной технологической компании. Один из наших разработчиков установил приложение в неправильном месте (/var). Приложение аварийно завершало работу из-за того, что файловая система /var была заполнена, а файлы журналов, хранящиеся в /var/log в этой файловой системе, не могли быть дополнены новыми сообщениями из-за нехватки места. Однако система продолжала работать, потому что критические файловые системы / (root) и /tmp не заполнялись. Удаление проблемного приложения и его переустановка в файловой системе /opt решили эту проблему.

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

Linux поддерживает чтение около 100 типов разделов; он может создавать и записывать только некоторые из них. Но возможно — и очень часто — монтировать файловые системы разных типов в одной и той же корневой файловой системе. В этом контексте мы говорим о файловых системах с точки зрения структур и метаданных, необходимых для хранения и управления пользовательскими данными на разделе жесткого диска или логическом томе. Полный список типов разделов файловой системы, распознаваемых Linux 9.Здесь представлена ​​команда 0461 fdisk , чтобы вы могли почувствовать высокую степень совместимости Linux с очень многими типами систем.

 0 Пустой 24 NEC DOS 81 Minix / старый Lin bf Solaris
 1 FAT12 27 Скрытая NTFS Win 82 Linux swap / So c1 DRDOS/сек (FAT-
 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/сек (FAT-
 3 XENIX usr 3c PartitionMagic 84 OS/2 скрыто или c6 DRDOS/сек (FAT-
 4 FAT16 <32M 40 Venix 80286 85 Расширенный Linux c7 Syrinx
 5 Расширенный 41 PPC PReP Boot 86 Набор томов NTFS da Данные без файловой системы
 6 FAT16 42 SFS 87 Набор томов NTFS db CP/M / CTOS / . 
 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Открытый текст Linux от Dell Utility
 8 AIX 4e QNX4.x 2-я часть 8e Linux LVM df BootIt
 9Загрузочный AIX 4f QNX4.x 3-я часть 93 Amoeba e1 Доступ к DOS
 a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
 b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
 c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi ea выравнивание Rufus
 e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
 f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NEXTSTEP ef EFI (FAT-12/16/
11 Скрытый FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a9NetBSD f1 SpeedStor
14 Скрытый FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor
16 Скрытый FAT16 63 GNU HURD или Sys af HFS / HFS+ f2 DOS вторичный
17 Скрытый HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b Скрытый W95 FAT3 70 DiskSecure Mult bb Мастер загрузки hid fd Linux raid auto
1c Скрытый W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep
1e Скрытый W95 FAT1 80 Старая загрузка Minix для Solaris и BBT
 

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

  • бтрфс
  • рамы
  • доб2
  • доб3
  • доб4
  • жир
  • gfs2
  • hfsplus
  • миникс
  • MS-DOS
  • нтфс
  • запасные части
  • жир
  • xfs

Другие дистрибутивы поддерживают создание различных типов файловых систем. Например, CentOS 6 поддерживает создание только тех файловых систем, которые выделены жирным шрифтом в приведенном выше списке.

Монтирование

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

Точка монтирования — это просто каталог, как и любой другой, созданный как часть корневой файловой системы. Так, например, домашняя файловая система смонтирована в каталоге /home. Файловые системы могут быть смонтированы в точках монтирования других файловых систем, не являющихся корневыми, но это менее распространено.

Корневая файловая система Linux монтируется в корневой каталог (/) в самом начале последовательности загрузки. Другие файловые системы монтируются позже, программами запуска Linux, либо rc под SystemV, либо systemd в новых версиях Linux. Монтирование файловых систем в процессе запуска управляется конфигурационным файлом /etc/fstab. Простой способ запомнить это: fstab означает «таблица файловой системы» и представляет собой список файловых систем, которые должны быть смонтированы, их назначенные точки монтирования и любые параметры, которые могут потребоваться для определенных файловых систем.

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

Заключение

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

Если у вас есть вопросы, задавайте их в комментариях ниже, и я постараюсь на них ответить.

В следующем месяце

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *