Linux Directory Structure

Violet_Evgadn·2023년 4월 26일
0

Linux

목록 보기
9/34

Linux File 종류

Linux는 저장하는 모든 것들을 파일 형태로써 관리하는 OS이다.

그렇다면 Linux에서 관리하는 파일의 종류에 대해 알아보자.

일반 파일

우리가 생각하는 일반적인 파일로써 Windows에서 부르는 파일과 똑같은 개념이라 생각하면 된다.

데이터를 저장하는데 활용되며 Linux는 대부분 일반 파일 + Directory 파일로 구성되어 있다.

Windows에서는 텍스트 파일을 메모장에서 볼 수 있듯 Linux에서는 ASCII 코드로 구성된 텍스트 파일을 VI Editor 계열의 문서 편집기를 통해 확인 및 수정이 가능하다.

텍스트 파일 외의 파일들은 확장자에 맞는 응용 프로그램이 있어야 확인 가능하다.

디렉터리 파일

디렉터리 파일은 일반 파일과 (하위) 디렉터리 파일들을 저장하고 있는 파일이다.

Windows에서 폴더와 똑같은 개념인데 Linux에서는 디렉터리 또한 파일의 일종으로 간주한다.

장치 파일

장치(HW)들을 관리하는 파일이다.

이전에 말했듯 Linux에서는 하드디스크도 "/dev/sda1" 같은 형식으로 관리한다.

Linux는 장치 파일을 활용하여 CPU, 하드디스크, USB 같은 유형의 장치들을 파일화하여 관리한다.

링크 파일

링크 파일은 원본 파일을 다른 경로에서나 다른 파일명으로도 접근할 수 있도록 링크시킨 파일을 말한다.

이렇게 말하면 어렵게 느껴질지도 모르지만 Windows에서 "바로가기"와 유사하다고 생각하면 편하다.

내 바탕화면에 있는 이 IDEAProject 폴더는 "C://Users/~/IdeaProjects" 폴더의 바로가기 폴더이다.

바탕화면에 있는 IDEAProject 폴더를 클릭하면 바로 "C://Users/~/IdeaProjects" 폴더로 접속할 수 있다.

이렇듯 Linux에서도 바로가기 Directory(혹은 일반 파일)을 만들 수 있고 이렇게 만들어진 것이 링크 파일이다.

컴퓨터 프로그래밍 적으로 말하자면 C언어의 주솟값에 저장되어 있는 데이터가 원본 파일이고 "Object a"라는 객체에 주솟값을 저장했을 경우 Object가 링크 파일이라고 할 수 있는 것이다.


Linux Directory Structure(Root Directory 구조)

Linux는 수많은 파일을 효율적으로 관리하기 위해 Root Directory 아래 수많은 파일들이 Tree 구조로 되어 있는데 각 Directory는 용도에 따라 구분되며 이를 File System이라고 한다.

모든 디렉토리의 최상위 디렉터리, 즉 Tree의 Root 위치에 존재하는 Directory를 루트 디렉터리라고 하며 "/"로 표시한다.

출처 : https://nepalisupport.wordpress.com/2016/06/29/linux-file-system-hierarchy/

/

루트 디렉터리를 의미하며 모든 디렉터리 및 파일의 최상위 디렉토리이다.

절대 경로로 특정 파일이나 디렉터리에 접근하기 위해선 항상 루트 디렉터리에서부터 시작해야 하며 오직 Root 권한을 가진 사용자만 쓰기 권한을 가진다.

/bin

Binary의 약자로써 실행 가능한 이진 파일(명령어)들이 저장되어 있다.

Single-User Mode에서 활용할 수 있는 일반 Linux 명령어들과 Multi-User Mode에서 모든 사용자가 사용할 수 있는 명령어들이 저장되어 있다.

대표적인 명령어로썬 ps, ls, grep, cp 등이 존재한다.

/sbin

System Binary의 약자로써 실행 가능한 System 관련 이진 파일(명령어)들이 저장되어 있다.

/bin이 일반 User들이 활용하는 명령어라면 /sbin은 주로 System 관리자가 시스템 상태 확인 및 유지 관리 목적으로 주로 활용한다.

대표적인 명령어로썬 iptables, ifconfig, fdisk 등이 존재한다.

/etc

모든 프로그램에 대한 Configuration 파일들을 저장하고 있는 설정 파일 Directory이다.

여기에는 개별 프로그램을 시작하거나 중지시킬 수 있는 Start/Stop 쉘 스크립트도 저장되어 있다.

Linux Booting 과정에서 설명했던 여러 파일을 예시로 들어보자면 GRUB 설정 파일인 "/etc/grub.conf"와 Partition에 대한 설정을 저장한 "/etc/fstab"이 존재한다.

/dev

Device의 약자로써 System Device(HW; 장치) 파일을 저장하고 있는 디렉터리이다.

Linux는 모든 것들을 파일 형태로 관리하고 있으며 HW(Device) 또한 "장치 파일"이라는 형태로 관리한다.

이 물리적 장치를 파일화 시킨 것들을 dev 디렉터리 내에 저장하는 것이다.

대표적으로 /dev/sda(하드디스크 장치), /dev/cdrom(CD-ROM) 장치 파일이 존재한다.

/proc

Process의 약자로써 System Process에 대한 정보를 저장하고 있다.

먼저 System Resource에 대한 텍스트 정보가 저장되어 있는 가상 파일 시스템이다. 대표적으로 "/proc/uptime"이 존재하는데 이 파일에는 현재 서버가 얼마나 켜져 있었는지를 저장하고 있다.

또한 실행 중인 프로세스에 대한 정보를 포함하는 Pseudo FileSystem(유사 파일 시스템)이기도 한데 "/proc/[PID]" Directory에 특정 PID를 가진 Process에 대한 정보를 저장하고 있다.

/var

Variable의 약자로써 계속해서 내용이 증가할 것으로 판단되는 파일들은 대부분 var Directory에서 찾을 수 있다.

System Log 파일(/var/log), DB & Package 파일(/var/lib), email 파일(/var/mail), 재부팅 시 필요한 임시 파일(/var/tmp), Lock 파일(/var/lock), Print Queue(/var/spool) 등이 존재한다.

/tmp

Temporary의 약자로써 임시 파일을 저장하는 디렉터리이다.

임시파일들은 System과 사용자에 의해 만들어지며 재부팅 시 tmp Directory 내에 있는 모든 파일들은 삭제되며 10일 정도의 간격을 두고 정기적으로 삭제된다.

/usr

User의 약자로써 일반 사용자들이 사용하는 디렉터리이다.

User가 사용하는 이진 파일, 라이브러리, 설명서 및 2차 프로그램의 Source Code를 저장하고 있다.

  • /usr/bin : 사용자 프로그램을 위한 이진 파일
    • 만약 /bin에서 이진 파일(명령어)을 찾을 수 없을 경우 이곳에 저장되어 있음
    • ex : at, awk, cc, less 등
  • /usr/sbin : 시스템 관리자를 위한 이진 파일
    • 만약 /sbin에서 System 이진 파일(명령어)을 찾을 수 없을 경우 이 곳에 저장되어 있음
    • ex : atd, cron, useradd 등
  • /usr/lib : /usr/bin & /usr/sbin을 위한 라이브러리가 포함되어 있음
  • /usr/local : 새로운 프로그램을 설치할 경우 이 곳에 저장됨
    • Windows의 "C:\Program Files" 폴더와 유사한 Directory
    • ex : Apache를 설치할 경우 /usr/local/apache2 아래에 저장됨
  • /usr/src : Program Source 및 Kernel Source 파일들이 저장되어 있음
  • /usr/man : Manual 페이지가 저장되어 있음
  • /usr/include : 기본 C 라이브러리 헤더 및 각종 라이브러리 헤더 파일들이 저장되어 있음

/home

사용자들의 Home Directory들이 저장되어 있다.

사용자를 추가할 때마다 사용자 Username과 동일한 디렉터리가 자동으로 생성되고 해당 User의 홈 디렉터리로써 설정된다.

서버 관리자가 아닐 경우 가장 많이 접속하게 될 Directory로써 Root가 아닌 일반 User로써 로그인할 경우 처음에는 /home/[Username] 디렉토리로 접속한다.

/boot

Boot Loader관련 파일이 저장되어 있어 Linux Booting 시 사용되는 디렉터리이다.

Kernel initrd, vmlinux, GRUB 파일들이 모두 이 디렉토리 내에 저장되어 있다.

/lib

Library의 약자로써 /bin과 /sbin 아래에 있는 이진 파일들을 위한 라이브러리 파일이 저장되어 있다.

(/usr/lib은 /usr/bin & /usr/sbin을 위한 Library, /lib은 /sbin & /bin을 위한 Library)

라이브러리 파일 이름 형식은 모두 "ld or lib.so.*"이다.

/opt

Optional add-on Applications를 저장한다는 의미에서 opt라는 이름이 붙었다.

추가 응용프로그램 패키지 설치 장소로써 Packager Manger가 자체적으로 이곳에 설치/삭제를 수행한다.

/media

DVD, CD-ROM, USB 등의 외부 장치들의 Mount Point로 사용되는 디렉터리이다.

/mnt

Mount의 약자로써 /media와 비슷한 기능을 한다.

/media와 차이가 있다면 /media는 OS에서 자동으로 마운팅 시킬 때 사용되는 디렉터리이지만 /mnt는 사용자가 직접 마운트 시킬 때 사용되는 디렉터릴이다.

예를 들어 USB를 꽂으면 OS에 의해 /media 디렉터리와 마운팅되지만 사용자가 명령어를 통해 마운트시킬 경우 /mnt 디렉토리와 마운팅 되는 것이다.

/root

관리자 계정(Root 계정)의 홈 디렉터리이다.

/run

마지막 부팅 단계 이후 시작된 모든 Process의 Runtime Data가 저장되는 디렉터리이다.

Process ID 및 잠금 파일 등이 저장되며 재부팅할 때마다 새롭게 생성되는 디렉터리이다.

/sys

Device를 관리하기 위한 가상 파일 시스템 디렉터리로써 Linux Kernel 관련 정보들이 저장되어 있다.

/srv

Service의 약자로써 특정 서비스 관련된 데이터들이 저장된다.

FTP나 Web 등 System에서 제공하는 서비스의 데이터가 저장되는데, 예를 들어 /srv/cvs는 CVS System 관련 데이터가 저장된다.

/lost + found

휴지통과 같은 개념이다.

Linux Tree 구조에는 이렇게 많은 Directory들이 있다. 당연하게도 이 Directory들을 모두 외울 필요는 없으며 궁금할 때마다 Directory의 용도를 확인하는 정도로만 활용하면 될 것이다.

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글