Доступ к файловым системам в Red Hat Enterprise Linux

Red Hat Enterprise LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы получите практический опыт управления файловыми системами Linux в системе Red Hat Enterprise Linux (RHEL). Вы научитесь идентифицировать файловые системы и блочные устройства, анализировать использование дискового пространства с помощью команд df и du, а также практиковаться в ручном монтировании и размонтировании файловых систем.

Кроме того, эта лабораторная работа проведет вас через эффективный поиск файлов с использованием таких команд, как locate и find, что позволит вам искать файлы на основе различных критериев, таких как имя, владелец, разрешения, размер, время и тип файла.

Идентификация файловых систем и блочных устройств

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

Сначала давайте разберемся с некоторыми основными понятиями:

  • Блочное устройство (Block Device): Блочное устройство — это файл, который обеспечивает низкоуровневый доступ к устройствам хранения. Примеры включают жесткие диски, SSD и USB-накопители. В Linux они обычно находятся в каталоге /dev.
  • Раздел (Partition): Раздел — это логическое деление физического устройства хранения. Один жесткий диск может иметь несколько разделов, каждый из которых отформатирован с использованием другой файловой системы или используется для разных целей.
  • Файловая система (File System): Файловая система — это метод и структура данных, которые операционная система использует для управления хранением и извлечением данных. Она организует данные в файлы и каталоги. Распространенные файловые системы Linux включают XFS и ext4.
  • Точка монтирования (Mount Point): Точка монтирования — это пустой каталог в иерархии файловой системы, к которому прикрепляется или «монтируется» файловая система, чтобы сделать ее содержимое доступным.

Давайте начнем с вывода списка блочных устройств, доступных в вашей системе, с помощью команды lsblk. Эта команда предоставляет древовидный обзор всех блочных устройств и их разделов.

lsblk

Вы должны увидеть вывод, аналогичный этому, показывающий такие устройства, как vda, vdb и т. д., которые представляют виртуальные дисковые устройства в вашей контейнерной среде:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    253:0    0   40G  0 disk
├─vda1 253:1    0    1M  0 part
├─vda2 253:2    0  100M  0 part /boot/efi
└─vda3 253:3    0 39.9G  0 part /
vdb    253:16   0   40G  0 disk

В выводе:

  • NAME: Имя блочного устройства (например, vda, vdb) или раздела (например, vda1, vda2).
  • MAJ:MIN: Основной и дополнительный номера устройств.
  • RM: Съемное устройство (1, если съемное, 0, если нет).
  • SIZE: Размер устройства или раздела.
  • RO: Только для чтения (1, если только для чтения, 0, если нет).
  • TYPE: Тип устройства (например, disk, part для раздела).
  • MOUNTPOINTS: Где устройство или раздел в данный момент смонтирован.

Далее давайте рассмотрим файловые системы и их использование с помощью команды df. Команда df сообщает об использовании дискового пространства файловой системой.

df

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

Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs            4096       0      4096   0% /dev
tmpfs            1822216       0   1822216   0% /dev/shm
tmpfs             728888     616    728272   1% /run
efivarfs             256       9       243   4% /sys/firmware/efi/efivars
/dev/vda3       41773036 3628732  38144304   9% /
/dev/vda2         102156    7198     94958   8% /boot/efi
tmpfs             364440       0    364440   0% /run/user/1000

Чтобы сделать вывод более читаемым, особенно для размеров, вы можете использовать опцию -h для формата, читаемого человеком (например, M для MiB, G для GiB).

df -h

Вы увидите размеры в более понятном формате:

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           1.8G     0  1.8G   0% /dev/shm
tmpfs           712M  616K  712M   1% /run
efivarfs        256K  8.5K  243K   4% /sys/firmware/efi/efivars
/dev/vda3        40G  3.5G   37G   9% /
/dev/vda2       100M  7.1M   93M   8% /boot/efi
tmpfs           356M     0  356M   0% /run/user/1000

Наконец, давайте используем команду lsblk -fp, чтобы вывести полный путь к устройствам, их UUID (Universally Unique Identifiers) и типы файловых систем. UUID — это стабильные идентификаторы, которые остаются неизменными, даже если имена устройств меняются, что делает их полезными для последовательного монтирования.

lsblk -fp

Вывод будет включать UUID и типы файловых систем:

NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
/dev/vda
├─/dev/vda1
├─/dev/vda2 vfat   FAT16       E52E-0564                              92.7M     7% /boot/efi
└─/dev/vda3 xfs          root  4c234c8b-4f67-4d65-abb5-06753b1ec236   36.4G     9% /
/dev/vdb

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

Анализ использования файловой системы с помощью df и du

На этом шаге вы глубже изучите анализ использования файловой системы с помощью команд df и du. В то время как df предоставляет обзор использования дискового пространства для смонтированных файловых систем, du (disk usage — использование диска) используется для оценки использования дискового пространства для конкретных файлов или каталогов. Понимание разницы и того, когда использовать каждую команду, имеет решающее значение для эффективного управления дисковым пространством.

Давайте начнем с повторного рассмотрения команды df с ее опцией, читаемой человеком. Эта команда отлично подходит для получения краткой сводки о том, сколько места используется и доступно во всех смонтированных файловых системах.

df -h

Вывод покажет использование диска в удобном для чтения формате (например, G для гигабайт, M для мегабайт):

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        892M     0  892M   0% /dev
tmpfs           915M     0  915M   0% /dev/shm
tmpfs           915M   17M  899M   2% /run
tmpfs           915M     0  915M   0% /sys/fs/cgroup
/dev/vda4       8.0G  1.4G  6.7G  17% /
/dev/vda3      1014M  166M  849M  17% /boot
tmpfs           183M     0  183M   0% /run/user/1000

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

Чтобы увидеть использование диска в вашем текущем каталоге (~/project), используйте du без каких-либо аргументов. Это выведет список размеров каждого файла и подкаталога в ~/project.

du

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

4       ./.config/xfce4/xfconf/xfce-perchannel-xml
8       ./.config/xfce4/xfconf
12      ./.config/xfce4
16      ./.config
4       ./.local/share/nano
8       ./.local/share
12      ./.local
28      .

Чтобы сделать вывод более читаемым, аналогично df -h, вы можете использовать опцию -h с du.

du -h

Это отобразит размеры в удобочитаемых единицах:

4.0K    ./.config/xfce4/xfconf/xfce-perchannel-xml
8.0K    ./.config/xfce4/xfconf
12K     ./.config/xfce4
16K     ./.config
4.0K    ./.local/share/nano
8.0K    ./.local/share
12K     ./.local
28K     .

Часто вас интересует общий размер каталога, а не размер каждого отдельного файла и подкаталога. Для этого вы можете использовать опцию -s (summary — сводка) вместе с -h. Давайте проверим общий размер вашего домашнего каталога (~).

du -sh ~

Эта команда выведет общий размер вашего домашнего каталога:

48K     /home/labex

Давайте создадим несколько файлов, чтобы увидеть, как du сообщает об их размерах. Мы создадим каталог с именем test_data, а затем создадим несколько файлов внутри него.

Сначала создайте каталог:

mkdir ~/project/test_data

Теперь перейдите в каталог test_data:

cd ~/project/test_data

Далее создайте несколько файлов с некоторым содержимым. Мы будем использовать команду head для создания файлов определенных размеров.

head -c 1K < /dev/urandom > file1.txt
head -c 5K < /dev/urandom > file2.txt
head -c 10K < /dev/urandom > file3.txt

Теперь используйте du -h, чтобы увидеть размеры этих новых файлов и каталога test_data.

du -h

Вы должны увидеть вывод, аналогичный этому:

1.0K    ./file1.txt
5.0K    ./file2.txt
10K     ./file3.txt
24K     .

Последняя строка (24K .) показывает общий размер текущего каталога (., который является ~/project/test_data).

Наконец, давайте вернемся в ваш каталог ~/project и проверим общий размер test_data с помощью du -sh.

cd ~/project
du -sh test_data

Это покажет сводный размер каталога test_data:

24K     test_data

Это демонстрирует, как du можно использовать для определения потребления дискового пространства в определенных каталогах, помогая вам эффективно управлять хранилищем.

Ручное монтирование и размонтирование файловых систем

На этом шаге вы узнаете, как вручную монтировать и размонтировать файловые системы. Монтирование файловой системы делает ее содержимое доступным через определенный каталог (точку монтирования) в иерархии файловой системы. Размонтирование отсоединяет файловую систему от ее точки монтирования, делая ее содержимое недоступным до тех пор, пока она не будет смонтирована снова. Это критический навык для управления съемными носителями, временным хранилищем или новыми разделами диска.

Для этого упражнения мы будем использовать одно из несмонтированных блочных устройств, доступных в вашей среде виртуальной машины LabEx. Из предыдущего шага вы должны были увидеть устройство /dev/vdb, которое в настоящее время не смонтировано. Мы будем использовать /dev/vdb для этого шага.

Сначала давайте подтвердим доступные несмонтированные блочные устройства, используя lsblk.

lsblk

Вы должны увидеть /dev/vdb в списке без каких-либо точек монтирования.

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda    253:0    0   40G  0 disk
├─vda1 253:1    0    1M  0 part
├─vda2 253:2    0  100M  0 part /boot/efi
└─vda3 253:3    0 39.9G  0 part /
vdb    253:16   0   40G  0 disk

Прежде чем вы сможете смонтировать файловую систему, вам понадобится точка монтирования, которая представляет собой пустой каталог. Обычно для временного монтирования используется /mnt или создается подкаталог в нем. Давайте создадим новый каталог с именем mydata внутри вашего каталога ~/project, чтобы он служил нашей точкой монтирования.

mkdir ~/project/mydata

Теперь нам нужно отформатировать устройство /dev/vdb с помощью файловой системы. Мы будем использовать файловую систему XFS, которая является стандартной для Red Hat Enterprise Linux. Будьте осторожны с этой командой, так как она сотрет все данные на указанном устройстве.

sudo mkfs.xfs /dev/vdb

Вы увидите вывод, указывающий на создание файловой системы XFS:

meta-data=/dev/vdb               isize=512    agcount=4, agsize=2621440 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=1 inobtcount=1 nrext64=0
data     =                       bsize=4096   blocks=10485760, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=16384, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

Теперь, когда /dev/vdb имеет файловую систему XFS, вы можете смонтировать ее в вашу точку монтирования ~/project/mydata. Команда mount требует привилегий sudo.

sudo mount /dev/vdb ~/project/mydata

Чтобы убедиться, что файловая система успешно смонтирована, снова используйте команду df -h. Вы должны увидеть /dev/vdb в списке с /home/labex/project/mydata в качестве точки монтирования.

df -h

Найдите /dev/vdb в выводе:

Filesystem      Size  Used Avail Use% Mounted on
...
/dev/vdb         40G  318M   40G   1% /home/labex/project/mydata

Теперь вы можете создавать файлы и каталоги внутри ~/project/mydata, и они будут храниться на устройстве /dev/vdb. Давайте создадим тестовый файл:

sudo touch ~/project/mydata/testfile.txt

Вы можете вывести список содержимого ~/project/mydata, чтобы подтвердить создание файла:

ls -l ~/project/mydata

Вы должны увидеть testfile.txt в списке:

total 0
-rw-r--r--. 1 root root 0 Jun 16 11:09 testfile.txt

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

sudo umount ~/project/mydata

Если команда размонтирования завершается с ошибкой "target is busy" (цель занята), это означает, что какой-то процесс все еще обращается к точке монтирования. Это часто происходит, если ваш текущий рабочий каталог находится внутри смонтированной файловой системы. Чтобы решить эту проблему, измените свой текущий каталог на местоположение за пределами точки монтирования, например, ваш домашний каталог (~).

cd ~

Затем попробуйте размонтировать еще раз:

sudo umount ~/project/mydata

После размонтирования убедитесь, что /dev/vdb больше не смонтирован, снова проверив df -h.

df -h

Вы больше не должны видеть /dev/vdb, смонтированный на /home/labex/project/mydata.

Filesystem      Size  Used Avail Use% Mounted on
...
## /dev/vdb should not be listed here anymore

Это завершает процесс ручного монтирования и размонтирования файловой системы.

Поиск файлов по имени с помощью locate и find

На этом шаге вы узнаете, как находить файлы в вашей системе, используя две мощные команды: locate и find. Обе команды помогают вам искать файлы, но они работают по-разному и подходят для разных сценариев.

Использование команды locate

Команда locate работает очень быстро, потому что она ищет в предварительно построенной базе данных имен и путей к файлам. Однако это означает, что она может не найти файлы, которые были созданы или удалены после последнего обновления базы данных. База данных обычно обновляется ежедневно заданием cron, но вы можете принудительно обновить ее.

Сначала давайте убедимся, что пакет mlocate, который предоставляет команду locate, установлен.

sudo dnf install -y mlocate

Во время установки вы увидите вывод, похожий на этот:

Last metadata expiration check: 0:00:01 ago on Mon 15 May 2023 08:00:00 AM UTC.
Dependencies resolved.
================================================================================
 Package        Architecture  Version             Repository               Size
================================================================================
Installing:
 mlocate        x86_64        0.26-28.el9         rhel-9-for-x86_64-appstream-rpms 100 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 100 k
Installed size: 230 k
Downloading Packages:
mlocate-0.26-28.el9.x86_64.rpm     100 kB/s | 100 kB     00:01
--------------------------------------------------------------------------------
Total                                            100 kB/s | 100 kB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : mlocate-0.26-28.el9.x86_64                             1/1
  Running scriptlet: mlocate-0.26-28.el9.x86_64                             1/1
  Verifying        : mlocate-0.26-28.el9.x86_64                             1/1
Installed:
  mlocate-0.26-28.el9.x86_64

Complete!

После установки вам необходимо обновить базу данных locate. Эта команда требует привилегий sudo.

sudo updatedb

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

Теперь давайте поищем общий системный файл, например, passwd.

locate passwd

Вы увидите список путей, содержащих "passwd":

/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz
...output omitted...

Чтобы выполнить поиск без учета регистра, используйте опцию -i. Давайте поищем файлы, содержащие "messages", не беспокоясь о регистре.

locate -i messages

Вы увидите результаты, подобные:

/usr/share/locale/zza/LC_MESSAGES
/usr/share/makedumpfile/eppic_scripts/ap_messages_3_10_to_4_8.c
/usr/share/vim/vim82/ftplugin/msmessages.vim
...output omitted...

Вы также можете ограничить количество результатов, используя опцию -n. Давайте найдем первые 5 вхождений "passwd".

locate -n 5 passwd

Это покажет только первые 5 совпадений:

/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/usr/share/man/man1/passwd.1.gz
/usr/share/man/man5/passwd.5.gz

Использование команды find

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

Основной синтаксис для findfind [path] [expression]. Если путь не указан, он ищет в текущем каталоге.

Давайте поищем файл sshd_config, начиная с корневого каталога (/).

find / -name sshd_config

Вы должны увидеть путь к файлу конфигурации:

/etc/ssh/sshd_config

При поиске частичных имен или использовании подстановочных знаков важно заключить шаблон имени файла в кавычки, чтобы предотвратить преждевременное расширение оболочкой. Давайте найдем все файлы, заканчивающиеся на .txt, в вашем каталоге ~/project.

find ~/project -name '*.txt'

Если вы создали file1.txt, file2.txt и file3.txt на предыдущем шаге, вы должны увидеть их в списке:

/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt

Чтобы выполнить поиск без учета регистра с помощью find, используйте опцию -iname. Давайте поищем файлы, содержащие "README" (без учета регистра) в каталоге /usr/share/doc.

find /usr/share/doc -iname '*readme*'

Вы увидите много результатов, например:

/usr/share/doc/libselinux/README
/usr/share/doc/libsepol/README
/usr/share/doc/libsemanage/README
...output omitted...

Команда find очень универсальна и может быть объединена с другими критериями, которые вы изучите на следующих шагах.

Поиск файлов по владельцу, разрешениям, размеру и времени

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

Поиск файлов по владельцу

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

Давайте найдем все файлы в вашем домашнем каталоге (~), принадлежащие пользователю labex.

find ~ -user labex

Это выведет список многих файлов, включая ваши файлы конфигурации:

/home/labex
/home/labex/.bash_logout
/home/labex/.bash_profile
/home/labex/.bashrc
/home/labex/.config
/home/labex/.config/xfce4
/home/labex/.config/xfce4/xfconf
/home/labex/.config/xfce4/xfconf/xfce-perchannel-xml
/home/labex/.local
/home/labex/.local/share
/home/labex/.local/share/nano
/home/labex/project
/home/labex/project/test_data
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt
...output omitted...

Аналогично, чтобы найти файлы, принадлежащие группе labex:

find ~ -group labex

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

Вы также можете искать по идентификатору пользователя (UID) или идентификатору группы (GID). Пользователь labex обычно имеет UID и GID 1000.

find ~ -uid 1000
find ~ -gid 1000

Поиск файлов по разрешениям

Опция -perm команды find позволяет искать файлы с определенными разрешениями. Разрешения могут быть указаны в восьмеричном (например, 755) или символьном (например, u=rwx,g=rx,o=rx) режиме.

Давайте создадим тестовый файл в вашем каталоге ~/project с определенными разрешениями.

touch ~/project/permission_test.txt
chmod 644 ~/project/permission_test.txt

Теперь давайте найдем файлы в ~/project, которые имеют ровно разрешения 644.

find ~/project -perm 644

Вы должны увидеть permission_test.txt в списке:

/home/labex/project/permission_test.txt

Вы также можете использовать ведущий / или - с восьмеричными разрешениями:

  • /: Соответствует, если любой из указанных битов разрешения установлен.
  • -: Соответствует, если все из указанных битов разрешения установлены.

Давайте найдем файлы в ~/project, где другие имеют хотя бы разрешение на чтение (o=r или 004).

find ~/project -perm -004

Это выведет список permission_test.txt и других файлов, которые предоставляют доступ на чтение другим.

/home/labex/project/permission_test.txt
...output omitted...

Поиск файлов по размеру

Опция -size позволяет искать файлы по их размеру. Вы можете указать размер с единицами измерения (например, k для килобайт, M для мегабайт, G для гигабайт). Вы также можете использовать + для "больше чем" и - для "меньше чем".

Давайте найдем файлы в вашем каталоге ~/project/test_data, размер которых ровно 1 килобайт.

find ~/project/test_data -size 1k

Вы должны увидеть file1.txt:

/home/labex/project/test_data/file1.txt

Теперь найдите файлы размером более 5 килобайт.

find ~/project/test_data -size +5k

Это должно вывести список file3.txt:

/home/labex/project/test_data/file3.txt

И файлы размером менее 10 килобайт.

find ~/project/test_data -size -10k

Это должно вывести список file1.txt и file2.txt:

/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt

Поиск файлов по времени изменения

Вы можете искать файлы по времени их изменения, используя такие опции, как -mmin (изменено минут назад) или -mtime (изменено дней назад).

Давайте найдем файлы в вашем каталоге ~/project, которые были изменены за последние 60 минут.

find ~/project -mmin -60

Это, вероятно, включит permission_test.txt и файлы в test_data, если вы создали их недавно:

/home/labex/project
/home/labex/project/permission_test.txt
/home/labex/project/test_data
/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt

Чтобы найти файлы, измененные более 1 дня назад (24 часа), вы можете использовать +1 с -mtime.

find ~/project -mtime +1

Эта команда может не вернуть никаких файлов, если все ваши файлы ~/project были созданы или изменены недавно.

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

Поиск файлов по типу (file type)

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

Команда find использует опцию -type, за которой следует один символ, чтобы указать тип файла. Вот некоторые распространенные типы файлов, которые вы можете искать:

  • f: Обычный файл (regular file)
  • d: Каталог (directory)
  • l: Символическая ссылка (symlink)
  • b: Блочное устройство (block device)
  • c: Символьное устройство (character device)
  • p: Именованный канал (FIFO)
  • s: Сокет (socket)

Давайте начнем с поиска всех каталогов в вашем каталоге ~/project.

find ~/project -type d

Вы должны увидеть вывод, подобный этому, со списком всех каталогов и подкаталогов:

/home/labex/project
/home/labex/project/test_data

Далее давайте поищем все обычные файлы в вашем каталоге ~/project.

find ~/project -type f

Это выведет список файлов, таких как file1.txt, file2.txt и file3.txt, которые вы создали ранее:

/home/labex/project/test_data/file1.txt
/home/labex/project/test_data/file2.txt
/home/labex/project/test_data/file3.txt

Теперь давайте создадим символическую ссылку, чтобы продемонстрировать поиск симлинков. Мы создадим симлинк на file1.txt в вашем каталоге ~/project.

ln -s ~/project/test_data/file1.txt ~/project/link_to_file1.txt

Проверьте, что симлинк был создан, используя ls -l:

ls -l ~/project/link_to_file1.txt

Вы должны увидеть вывод, указывающий, что это символическая ссылка:

lrwxrwxrwx. 1 labex labex 32 May 15 08:00 /home/labex/project/link_to_file1.txt -> /home/labex/project/test_data/file1.txt

Теперь найдите все символические ссылки в вашем каталоге ~/project.

find ~/project -type l

Вы должны увидеть вашу недавно созданную символическую ссылку:

/home/labex/project/link_to_file1.txt

Наконец, давайте поищем блочные устройства. Блочные устройства обычно находятся в каталоге /dev.

find /dev -type b

Это выведет список блочных устройств, таких как vda, vda1, vda2 и т. д.:

/dev/vda1
/dev/vda2
/dev/vda3
/dev/vda
/dev/vdb

Вы можете комбинировать опцию -type с другими опциями find, которые вы изучили на предыдущих шагах. Например, чтобы найти все каталоги в /etc, принадлежащие пользователю root:

find /etc -type d -user root

Это выдаст длинный список каталогов:

/etc
/etc/selinux
/etc/selinux/targeted
/etc/selinux/targeted/active
/etc/selinux/targeted/active/modules
...output omitted...

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

Резюме

В этой лабораторной работе мы получили практический опыт управления файловыми системами Linux в системе Red Hat Enterprise Linux. Мы начали с изучения идентификации файловых систем и блочных устройств с помощью таких команд, как lsblk, понимая основные концепции, такие как блочные устройства, разделы, файловые системы и точки монтирования. Затем мы изучили, как проверять использование файловой системы с помощью df и du, различая их функциональность для отчетности о дисковом пространстве. Лабораторная работа также охватывала важный навык ручного монтирования и размонтирования файловых систем, демонстрируя, как сделать содержимое файловой системы доступным, а затем отсоединить его.

Кроме того, мы углубились в эффективный поиск файлов с использованием различных критериев. Мы научились находить файлы по имени с помощью locate и find, понимая различия и соответствующие варианты использования для каждого из них. Лабораторная работа расширила это, обучая тому, как искать файлы на основе атрибутов владельца, разрешений, размера и времени, предоставляя мощные инструменты для администрирования системы и устранения неполадок. Наконец, мы попрактиковались в поиске файлов на основе их конкретных типов файлов, завершив всесторонний обзор управления файловой системой и методов поиска файлов.