OS

[ Linux ] 리눅스 디렉토리 구조

jogaknabi_1023 2024. 3. 5. 22:14

리눅스는 유닉스 파일 시스템 계층 구조(FHS:Filesystem Hierarchy Standard)를 기반으로 사용한다. FHS 덕분에 대부분의 리눅스 배포판에서 데이터가 비슷한 디렉토리 구조로 표현되며, 최상위 계층인 루트 디렉토리( / )를 시작으로 계층적으로 나뉘어지는 트리구조로 뻗어나간다. Everything is a file. = 리눅스 디렉토리
 
 

  • 루트 디렉토리 ( / )
    Linux 파일 시스템의 최상위에 위치한 디렉토리이다. 디렉토리들의 절대 경로를 표기할 때, 이 디렉토리 부터 시작한다.
  • User binaries ( /bin )
    ls, cp, mv 등 기본 내장된 쉘 명령의 실행 파일을 갖고 있는 디렉토리. 사용자별 제한 없이 사용할 수 있는 디렉토리이다.
  • Optional add-on Apps ( /opt )
    추가 응용 프로그램 패키지 설치 저장소. 패키지 매니저가 자체적으로 설치/삭제를 수행한다.
    예를 들어 크롬 브라우저 등 써드파티 어플리케이션에 대한 설치 디렉토리로 사용된다.
  • Boot Loader Files ( /boot )
    리눅스의 부팅에 필요한 정보를 가진 파일들이 있는 디렉토리.
  • Home Directory of root ( /root )
    관리자계정 root 사용자의 홈디렉토리
  • Device Files ( /dev )
    시스템 디바이스(장치) 파일을 저장하고 있는 디렉토리.
    /dev/sda (하드디스크 장치 파일), /dev/cdrom(CD-ROM)장치파일 등과 같은 장치 파일들이 여기에 위치해있다.
    즉, 물리적 장치가 파일화 되어 저장
  • System Binaries ( /sbin )
    /bin 처럼 명령어를 저장하고 있는 디렉토리. 차이점은 시스템 관리자용 명령어를 저장하고 있어 root 권한이 필요하다.
    /bin, /sbin 은 운영체제 별로 구별하는 방식에 차이가 있다.
    CentOS 는 디렉토리 구조 단순화를 위해 bin과 sbin을 심볼릭 링크로 공유하였다. (한쪽에서 변경되거나 삭제되면 다른 한쪽도 동일하게 적용)
    MacOS 는 bin 과 sbin을 모두 분리하여 사용한다. 맥에서 패키지 관리자인 brew를 사용하면 Cellar라는 별도의 디렉토리에 저장되며, usr/local/bin 에 심볼릭 링크 형태로 관리된다.
  • Configuration Files ( /etc )
    사용자 정보 및 암호 파일, 네트워크 파일, 시스템 초기화 파일 등 시스템 대부분의 설정파일이 존재하는 디렉토리.
  • Service Data ( /srv )
    시스템 관리자가 설치한 서비스의 데이터 파일이나 문서를 저장하는 곳.
  • Home Directories ( /home )
    사용자들의 홈 디렉토리가 있는 곳. 사용자를 추가하면 사용자의 id와 동일한 디렉토리가 이곳에 자동으로 생성
  • Temporary Files ( /tmp )
    임시파일을 저장하기 위한 디렉토리. 재부팅 시에 삭제되며 정기적으로 10일 정도 간격으로 삭제된다.
  • System Libraries ( /lib )
    커널이 필요로 하는 각종 라이브러리 파일, 커널 모듈 파일 등이 존재하는 디렉토리.
  • User Programs ( /usr )
    일반 사용자들이 사용하는 디렉토리.
    각 유저 이름에 맞는 폴더이름이 생성되어 있고 각 폴더 마다 bin, sbin, shared, lib과 같은 각 유저들이 사용할 수 있는 폴더들이 위치한다. 루트 유저와 자기 자신만 접근가능하다. 
  • Removable Devices ( /media )
    DVD, CD-ROM, USB 등의 외부 장치들의 마운트 포인트(연결)로 사용하는 디렉토리
  • Variable Files ( /var )
    기타 모든 다용도로 사용될 수 있는 파일들이 저장되며 로그 파일, 데이터베이스 캐싱 파일, 웹서버 이미지 파일 등이 위치하는 디렉토리.
  • Mount ( /mnt )
    /media와 비슷한 기능을 한다. 하지만 차이점은 Media는 OS에서 자동으로 마운팅해주는 포인트로 주로 사용되며 mnt는 사용자가 직접 마운트하는 경로로 사용된다.
    예를 들어 컴퓨터에 usb를 꽂아 OS에 자동으로 마운팅된다면 주로 /media 폴더에, 외부에 있는 디스크 등을 직접 명령어를 통해 마운트한다면 /mnt 디렉토리에 위치하게 된다.