Red Hat Enterprise Linux 에서 파일 시스템 접근하기

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 랩에서는 Red Hat Enterprise Linux (RHEL) 시스템에서 Linux 파일 시스템을 관리하는 실습 경험을 얻게 됩니다. 파일 시스템과 블록 장치를 식별하고, dfdu를 사용하여 디스크 사용량을 검사하며, 파일 시스템을 수동으로 마운트하고 마운트 해제하는 연습을 하게 됩니다.

또한, 이 랩에서는 locatefind와 같은 명령어를 사용하여 파일을 효율적으로 찾는 방법을 안내합니다. 이를 통해 이름, 소유권, 권한, 크기, 시간 및 파일 유형과 같은 다양한 기준에 따라 파일을 검색할 수 있습니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 95%입니다.학습자들로부터 99%의 긍정적인 리뷰율을 받았습니다.

파일 시스템 및 블록 장치 식별

이 단계에서는 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

특히 크기의 경우 출력을 더 읽기 쉽게 만들려면 사람이 읽을 수 있는 형식 (예: MiB 의 경우 M, GiB 의 경우 G) 에 대한 -h 옵션을 사용할 수 있습니다.

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 를 사용하여 파일 시스템 사용량 검토

이 단계에서는 dfdu 명령어를 사용하여 파일 시스템 사용량을 검사하는 방법을 자세히 살펴보겠습니다. 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와 유사하게 출력을 더 읽기 쉽게 만들려면 du와 함께 -h 옵션을 사용할 수 있습니다.

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 디렉토리로 돌아가서 du -sh를 사용하여 test_data의 총 크기를 확인해 보겠습니다.

cd ~/project
du -sh test_data

이렇게 하면 test_data 디렉토리의 요약된 크기가 표시됩니다.

24K     test_data

이는 du를 사용하여 특정 디렉토리 내의 디스크 공간 소비를 정확히 찾아내어 스토리지를 효과적으로 관리하는 방법을 보여줍니다.

수동으로 파일 시스템 마운트 및 마운트 해제

이 단계에서는 파일 시스템을 수동으로 마운트하고 마운트 해제하는 방법을 배우게 됩니다. 파일 시스템을 마운트하면 파일 시스템 계층 구조의 특정 디렉토리 (마운트 지점) 를 통해 해당 내용에 액세스할 수 있게 됩니다. 마운트 해제하면 마운트 지점에서 파일 시스템이 분리되어 다시 마운트될 때까지 해당 내용에 액세스할 수 없게 됩니다. 이는 이동식 미디어, 임시 스토리지 또는 새 디스크 파티션을 관리하는 데 중요한 기술입니다.

이 연습에서는 LabEx VM 환경에서 사용 가능한 마운트 해제된 블록 장치 중 하나를 사용합니다. 이전 단계에서 현재 마운트되지 않은 /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를 사용하거나 그 안에 하위 디렉토리를 만드는 것이 일반적인 관행입니다. 마운트 지점으로 사용할 ~/project 디렉토리 안에 mydata라는 새 디렉토리를 만들어 보겠습니다.

mkdir ~/project/mydata

이제 /dev/vdb 장치를 파일 시스템으로 포맷해야 합니다. Red Hat Enterprise Linux 의 기본값인 XFS 파일 시스템을 사용합니다. 이 명령을 사용할 때는 주의하십시오. 지정된 장치의 모든 데이터를 지웁니다.

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

마운트 해제 후 df -h를 다시 확인하여 /dev/vdb가 더 이상 마운트되지 않았는지 확인합니다.

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 를 사용하여 파일 이름으로 파일 찾기

이 단계에서는 locatefind라는 두 가지 강력한 명령어를 사용하여 시스템에서 파일을 찾는 방법을 배우게 됩니다. 두 명령어 모두 파일을 검색하는 데 도움이 되지만, 다르게 작동하며 서로 다른 시나리오에 적합합니다.

locate 명령어 사용

locate 명령어는 파일 이름과 경로의 사전 구축된 데이터베이스를 검색하기 때문에 매우 빠릅니다. 그러나 이는 마지막 데이터베이스 업데이트 이후에 생성되거나 삭제된 파일을 찾지 못할 수 있음을 의미합니다. 데이터베이스는 일반적으로 cron job 에 의해 매일 업데이트되지만, 강제로 업데이트할 수 있습니다.

먼저, locate 명령어를 제공하는 mlocate 패키지가 설치되어 있는지 확인해 보겠습니다.

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 옵션을 사용하여 결과 수를 제한할 수도 있습니다. "passwd"의 처음 5 개 항목을 찾아보겠습니다.

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 [path] [expression]입니다. 경로를 지정하지 않으면 현재 디렉토리를 검색합니다.

루트 디렉토리 (/) 에서 시작하여 sshd_config 파일을 검색해 보겠습니다.

find / -name sshd_config

구성 파일의 경로가 표시됩니다.

/etc/ssh/sshd_config

부분 이름으로 검색하거나 와일드카드 (wildcard) 를 사용할 때는 쉘이 조기에 확장하지 않도록 파일 이름 패턴을 따옴표로 묶는 것이 중요합니다. ~/project 디렉토리에서 .txt로 끝나는 모든 파일을 찾아보겠습니다.

find ~/project -name '*.txt'

이전 단계에서 file1.txt, file2.txtfile3.txt를 생성한 경우 해당 파일이 나열되는 것을 볼 수 있습니다.

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

find로 대소문자를 구분하지 않고 검색하려면 -iname 옵션을 사용합니다. /usr/share/doc 디렉토리에서 "README" (대소문자 구분 없음) 를 포함하는 파일을 검색해 보겠습니다.

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 옵션을 각각 사용하여 특정 사용자 또는 그룹이 소유한 파일을 검색할 수 있습니다. 사용자/그룹 이름 또는 숫자 ID 를 지정할 수 있습니다.

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(User ID) 또는 GID(Group ID) 로 검색할 수도 있습니다. labex 사용자는 일반적으로 UID 및 GID 가 1000입니다.

find ~ -uid 1000
find ~ -gid 1000

권한별 파일 찾기

find 명령의 -perm 옵션을 사용하면 특정 권한이 있는 파일을 검색할 수 있습니다. 권한은 8 진수 (예: 755) 또는 기호 (예: u=rwx,g=rx,o=rx) 모드로 지정할 수 있습니다.

~/project 디렉토리에 특정 권한이 있는 테스트 파일을 만들어 보겠습니다.

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

이제 정확히 644 권한이 있는 ~/project의 파일을 찾아보겠습니다.

find ~/project -perm 644

permission_test.txt가 나열되는 것을 볼 수 있습니다.

/home/labex/project/permission_test.txt

8 진수 권한과 함께 선행 / 또는 -를 사용할 수도 있습니다.

  • /: 지정된 권한 비트 중 하나라도 설정된 경우 일치합니다.
  • -: 지정된 권한 비트가 모두 설정된 경우 일치합니다.

~/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.txtfile2.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.txttest_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 시간) 이상 전에 수정된 파일을 찾으려면 -mtime과 함께 +1을 사용할 수 있습니다.

find ~/project -mtime +1

~/project 파일이 모두 최근에 생성되거나 수정된 경우 이 명령은 파일을 반환하지 않을 수 있습니다.

이러한 옵션을 결합하여 매우 구체적인 검색 쿼리를 생성하여 시스템에서 파일을 효율적으로 관리할 수 있습니다.

파일 유형 기반 파일 검색

이 마지막 단계에서는 find 명령어를 사용하여 파일 유형을 기반으로 파일을 검색하는 방법을 배우게 됩니다. 이는 특정 경로 내에서 모든 디렉토리, 일반 파일, 심볼릭 링크 또는 장치 파일을 찾아야 할 때 특히 유용합니다.

find 명령어는 파일 유형을 지정하기 위해 단일 문자가 뒤따르는 -type 옵션을 사용합니다. 다음은 검색할 수 있는 몇 가지 일반적인 파일 유형입니다.

  • f: 일반 파일 (Regular file)
  • d: 디렉토리 (Directory)
  • l: 심볼릭 링크 (symlink)
  • b: 블록 장치 (Block device)
  • c: 문자 장치 (Character device)
  • p: 명명된 파이프 (Named pipe, FIFO)
  • s: 소켓 (Socket)

~/project 디렉토리 내의 모든 디렉토리를 검색하는 것으로 시작해 보겠습니다.

find ~/project -type d

다음과 유사한 출력을 볼 수 있으며, 모든 디렉토리 및 하위 디렉토리가 나열됩니다.

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

다음으로, ~/project 디렉토리 내의 모든 일반 파일을 검색해 보겠습니다.

find ~/project -type f

이는 이전에 생성한 file1.txt, file2.txtfile3.txt와 같은 파일을 나열합니다.

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

이제 심볼릭 링크를 검색하는 것을 시연하기 위해 심볼릭 링크를 만들어 보겠습니다. ~/project 디렉토리에 있는 file1.txt에 대한 심볼릭 링크를 만들 것입니다.

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

이전 단계에서 배운 다른 find 옵션과 -type 옵션을 결합할 수 있습니다. 예를 들어, root 사용자가 소유한 /etc의 모든 디렉토리를 찾으려면 다음을 수행합니다.

find /etc -type d -user root

이는 긴 디렉토리 목록을 생성합니다.

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

이것으로 Linux 파일 시스템에 액세스하고 파일을 찾는 실습을 마칩니다. 장치를 식별하고, 디스크 사용량을 검사하고, 파일 시스템을 수동으로 마운트 및 마운트 해제하고, 다양한 기준을 사용하여 locatefind를 사용하는 방법을 배웠습니다.

요약

이 실습에서는 Red Hat Enterprise Linux 시스템에서 Linux 파일 시스템을 관리하는 실질적인 경험을 얻었습니다. lsblk와 같은 명령어를 사용하여 파일 시스템과 블록 장치를 식별하는 방법을 배우면서 시작하여 블록 장치, 파티션, 파일 시스템 및 마운트 지점과 같은 핵심 개념을 이해했습니다. 그 후, dfdu를 사용하여 파일 시스템 사용량을 검사하는 방법을 탐구하고 디스크 공간 보고 기능의 차이점을 구별했습니다. 또한 이 실습에서는 파일 시스템 내용을 액세스 가능하게 한 다음 분리하는 방법을 보여주면서 파일 시스템을 수동으로 마운트 및 마운트 해제하는 필수 기술을 다루었습니다.

또한 다양한 기준을 사용하여 파일을 효율적으로 찾는 방법을 자세히 살펴보았습니다. locatefind를 사용하여 이름으로 파일을 찾는 방법을 배우고 각 명령어의 차이점과 적절한 사용 사례를 이해했습니다. 이 실습에서는 소유권, 권한, 크기 및 시간 속성을 기반으로 파일을 검색하는 방법을 가르치면서 시스템 관리 및 문제 해결을 위한 강력한 도구를 제공했습니다. 마지막으로, 특정 파일 유형을 기반으로 파일을 검색하는 연습을 하여 파일 시스템 관리 및 파일 위치 기술에 대한 포괄적인 개요를 완성했습니다.