Введение
В этой лабораторной работе вы получите практический опыт управления файловыми системами 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, или имена NVMe, такие как nvme0n1 и nvme1n1:
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,nvme0n1илиnvme1n1) или раздела (например,vda1,vda2илиnvme0n1p2).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 для МиБ, G для ГиБ).
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 (универсально уникальных идентификаторов) и типов файловых систем. 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.
Перед переходом к следующему шагу сохраните краткий отчет в каталоге проекта, чтобы вы могли просмотреть информацию о блочных устройствах и файловых системах позже.
{
lsblk
echo
df -h
echo
lsblk -fp
} > ~/project/filesystem_overview.txt
Вы можете подтвердить создание отчета с помощью:
cat ~/project/filesystem_overview.txt
Анализ использования файловой системы с помощью 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 VM. В зависимости от виртуальной машины, этот диск может называться /dev/vdb, /dev/nvme1n1 или аналогично, поэтому мы обнаружим его, а не будем жестко прописывать имя устройства.
Сначала давайте идентифицируем корневой диск и дополнительный диск, который вы отформатируете и смонтируете.
ROOT_PARTITION=$(findmnt -n -o SOURCE /)
ROOT_DISK="/dev/$(lsblk -no PKNAME \"$ROOT_PARTITION\")"
DATA_DISK=$(lsblk -dnpo NAME,TYPE | awk '$2 == "disk" {print $1}' | grep -vx "$ROOT_DISK" | head -n 1)
echo "$DATA_DISK"
Эта команда должна вывести путь к дополнительному диску, например /dev/vdb или /dev/nvme1n1.
/dev/nvme1n1
Прежде чем вы сможете смонтировать файловую систему, вам нужна точка монтирования, которая представляет собой пустой каталог. Обычной практикой является использование /mnt для временных монтирований или создание подкаталога внутри него. Давайте создадим новый каталог с именем mydata внутри вашего каталога ~/project, который будет служить нашей точкой монтирования.
mkdir ~/project/mydata
Теперь нам нужно отформатировать дополнительный диск, хранящийся в $DATA_DISK, с файловой системой. Мы будем использовать файловую систему XFS, которая является стандартной для Red Hat Enterprise Linux. Будьте осторожны с этой командой, так как она удалит все данные на указанном устройстве.
sudo mkfs.xfs "$DATA_DISK"
Вы увидите вывод, указывающий на создание файловой системы XFS. Имя устройства в выводе будет соответствовать вашей виртуальной машине:
meta-data=/dev/nvme1n1 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
Теперь, когда на $DATA_DISK есть файловая система XFS, вы можете смонтировать ее в точку монтирования ~/project/mydata. Команда mount требует привилегий sudo.
sudo mount "$DATA_DISK" ~/project/mydata
Чтобы убедиться, что файловая система успешно смонтирована, снова используйте команду df -h. Вы должны увидеть ваш обнаруженный диск в списке с /home/labex/project/mydata в качестве точки монтирования.
df -h
Найдите ваш обнаруженный диск в выводе:
Filesystem Size Used Avail Use% Mounted on
...
/dev/nvme1n1 40G 318M 40G 1% /home/labex/project/mydata
Теперь вы можете создавать файлы и каталоги внутри ~/project/mydata, и они будут храниться на диске в $DATA_DISK. Давайте создадим тестовый файл:
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
После размонтирования убедитесь, что ваш обнаруженный диск больше не смонтирован, снова проверив df -h.
df -h
Вы больше не должны видеть ваш обнаруженный диск, смонтированный в /home/labex/project/mydata.
Filesystem Size Used Avail Use% Mounted on
...
## Ваш дополнительный диск больше не должен быть здесь указан.
На этом процесс ручного монтирования и размонтирования файловой системы завершен.
Поиск файлов по имени с помощью locate и find
На этом этапе вы узнаете, как находить файлы в вашей системе с помощью двух мощных команд: locate и find. Обе команды помогают искать файлы, но они работают по-разному и подходят для разных сценариев.
Использование команды locate
Команда locate работает очень быстро, потому что она ищет по предварительно созданной базе данных имен файлов и путей. Однако это означает, что она может не найти файлы, которые были созданы или удалены с момента последнего обновления базы данных. База данных обычно обновляется ежедневно с помощью задания cron, но вы можете принудительно выполнить обновление.
В этом образе команда locate уже доступна. Убедитесь, что команда существует, прежде чем обновлять ее базу данных.
command -v locate
Вы должны увидеть вывод, похожий на этот:
/usr/bin/locate
После установки вам нужно обновить базу данных 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, но гарантирует, что она найдет все файлы, соответствующие вашим критериям, включая те, которые были созданы совсем недавно. Она также предлагает гораздо более мощные параметры поиска.
Базовый синтаксис для find — find [путь] [выражение]. Если путь не указан, поиск выполняется в текущем каталоге.
Давайте поищем файл 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 очень универсальна и может быть объединена с другими критериями, которые вы изучите на следующих этапах.
Перед продолжением сохраните ключевые результаты locate и find, чтобы вы могли сравнить их позже.
{
locate -n 5 passwd
echo "---"
find ~/project -name '*.txt'
} > ~/project/search-results.txt
Вы можете просмотреть сохраненные результаты с помощью:
cat ~/project/search-results.txt
Поиск файлов по владельцу, правам доступа, размеру и времени
На этом этапе вы узнаете, как использовать мощную команду 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 были созданы или изменены недавно.
Эти опции можно комбинировать для создания очень специфических поисковых запросов, что позволяет эффективно управлять файлами в вашей системе.
Сохраните два ваших результата поиска, чтобы следующая проверка могла подтвердить, что были найдены правильные файлы.
find ~/project -perm 644 > ~/project/find-perm-results.txt
find ~/project/test_data -size +5k > ~/project/find-size-results.txt
Поиск файлов по типу файла
На этом последнем этапе вы узнаете, как использовать команду find для поиска файлов на основе их типа. Это особенно полезно, когда вам нужно найти все каталоги, обычные файлы, символические ссылки или файлы устройств в определенном пути.
Команда find использует опцию -type, за которой следует один символ для указания типа файла. Вот некоторые распространенные типы файлов, которые вы можете искать:
f: Обычный файлd: Каталогl: Символическая ссылка (symlink)b: Блочное устройствоc: Символьное устройствоp: Именованный канал (FIFO)s: Сокет
Начнем с поиска всех каталогов внутри вашего каталога ~/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/nvme0n1
/dev/nvme0n1p1
/dev/nvme0n1p2
/dev/nvme0n1p3
/dev/nvme1n1
Вы можете комбинировать опцию -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...
Сохраните результаты поиска символических ссылок перед завершением лабораторной работы.
find ~/project -type l > ~/project/find-type-results.txt
На этом лабораторная работа по доступу к файловым системам Linux и поиску файлов завершена. Вы научились идентифицировать устройства, анализировать использование диска, вручную монтировать и размонтировать файловые системы, а также использовать locate и find с различными критериями.
Резюме
В этой лабораторной работе мы получили практический опыт управления файловыми системами Linux в системе Red Hat Enterprise Linux. Мы начали с изучения того, как идентифицировать файловые системы и блочные устройства с помощью таких команд, как lsblk, понимая основные концепции, такие как блочные устройства, разделы, файловые системы и точки монтирования. Впоследствии мы изучили, как анализировать использование файловой системы с помощью df и du, различая их функциональные возможности для отчетов о дисковом пространстве. Лабораторная работа также охватила важный навык ручного монтирования и размонтирования файловых систем, демонстрируя, как сделать содержимое файловой системы доступным, а затем отсоединить его.
Кроме того, мы углубились в эффективный поиск файлов с использованием различных критериев. Мы научились находить файлы по имени с помощью locate и find, понимая различия и подходящие варианты использования для каждого из них. Лабораторная работа расширила это, обучив поиску файлов на основе атрибутов владельца, прав доступа, размера и времени, предоставляя мощные инструменты для системного администрирования и устранения неполадок. Наконец, мы попрактиковались в поиске файлов на основе их конкретных типов, завершив всесторонний обзор управления файловыми системами и методов поиска файлов.



