CS

[Linux] Linux File Hierarchy Structure

hanrabong 2021. 9. 8. 17:04

 

 

 

Docker를 공부하다가 Linux File Hierarchy Structure(FHS)를 찾아보았는데, 헷갈리고 잘 몰랐던 내용들이 많아 이 기회에 간략하게나마 정리를 해보았습니다. 

 

 

※ 혼자 공부하며 정리한 내용이니 잘못된 내용이 있거나 궁금한 내용이 있으면 언제든 댓글 달아주세요!!

 

 

Linux File Hierarchy Structure

  • Linux 파일 계층 구조 또는 FHS(파일 시스템 계층 구조 표준)는 Unix 계열 운영 체제에서 디렉토리 구조와 디렉토리 내용을 정의
  • Linux Foundation에서 관리
  • FHS에서는 심지어 다른 물리적 머신이나 가상 머신에 저장이 되어 있더라도 모든 파일과 디렉토리는 root 디렉토리 밑에 존재

 

Learnging The Linux File System(http://freedompenguin.com/articles/how-to/learning-the-linux-file-system/)

 

위의 사진을 바탕으로 디렉토리 하나씩 간략하게 얘기해 보겠습니다. 글이 잘 이해가 안가면 AWS EC2 Ubuntu를 생성해서 직접 디렉토리를 확인해 보거나 Ubuntu를 설치해서 구조를 확인해 보면 더욱더 이해가 됩니다!! 

 

 

/ (Root)

  • 전체 파일 시스템 계층의 기본 계층
  • 모든 파일과 디렉토리는 루트 디렉토리로부터 시작
  • 루트 사용자만이 이 티렉토리 아래에 write할 권한 존재
  • 위의 사진에서 보이는 /root는 루트 사용자의 홈 디렉토리이며 /와 다름

 

/ directory의 하위 directory

 

 

/bin

  • 모든 유저가 단일 사용자 모드에서 사용할 수 있어야 하는 필수 명령 바이너리
  • 일반적인 Linux 명령어는 이 디렉토리 아래에 위치
  • 시스템의 모든 사용자가 사용하는 명령도 위치
  • ex) ps, ls, ping, grep, cp

 

 

/boot

  • boot loader 파일로 리눅스가 부팅될 때 필요한 파일
  • Kernel initrd, vmlinux, grub 파일 등이 위치

 

 

boot 디렉토리 하위 파일

 

/dev

  • 필수 장치 파일
  • 터미널 장치, USB 또는 시스템에 연결된 모든 장치가 포함

▶ dev/tty: 현재 콘솔을 나타내는 파일 시스템 객체

# cat hello.txt와 동일
cp hello.txt /dev/ptty

 

ex) 

 

 

/etc

  • 호스트 별 시스템 전체 구성 파일
  • 모든 프로그램에 필요한 구성 파일을 포함
  • 개별 프로그램을 시작/중지 하는데 사용되는 시작 및 종료 셸 스크립트도 포함
  • apache나 nginx 설치하면 설정 파일도 /etc 안에 존재

-> 직접 설치해서 확인하면 더 쉽게 이해할 수 있습니다.

ex)

etc/nginx directory

 

/home

  • 모든 사용자가 개인 파일을 저장할 수 있는 홈 디렉토리
  • 저장된 파일, 개인 설정 등을 포함

 

 

/lib

  • 필수 공유 라이브러리와 커널 모듈
  • /bin 및 /sbin의 바이너리에 필수적인 라이브러리
  • 시스템을 부팅하고 루트 파일 시스템에서 명령을 실행하는데 필요한 공유 라이브러리
  • /usr/lib와 symlink되어 있지만 /bin 및 /sbin에서 필요한 공유라이브러리만 /lib에 위치

 

 

/media

  • USB, CD-ROM과 같은 이동식 미디어의 마운트 지점
  • 이동식 장치의 임시 마운트 디렉토리

 

 

/mnt

  • 임시로 마운트된 파일 시스템
  • 시스템 관리자가 파일 시스템을 마운트 할 수 있는 임시 마운트 디렉토리

 

☆   /dev   vs   /media   vs /mnt

  • /dev: 물리적 장치 또는 시스템 구성요소에 해당하는 특수 파일을 포함, 운영체제에 필수적이며 제거 불가
  • /media:  일반적으로 USB, sd-card, CD-ROM같은 이동식 미디어를 마운트 하는데 사용되는 일반 디렉토리
  • /mnt: 일반적으로 짧은 시간동안 다른 파일 시스템을 마운트하는데 사용되는 일반 디렉토리

 

→ /dev를 통해서는 어떤 장치들이 연결되어 있구나를 확인 가능하고 /media를 통해서는 usb나 sd-card에 어떤 내용들이 들어있는지 하위 디렉토리 파일들을 볼 수 있습니다.

 

-> 직접 usb를 컴퓨터에 연결시켜서 확인해보면 이해가 더 잘됩니다!!

 

 

 

/opt

  • 선택적 응용 프로그램 소프트웨어 패키지
  • 개별 공급업체의 add-on 애플리케이션이 포함
  • 추가 가능 애플리케이션은 /opt 하위 디렉토리에 설치
  • ex) chrom, chrom-remote-desktop 설치 파일

 

/opt/google directory

 

 

/sbin

  • /bin 파일과 마찬가지로 /sbin도 바이너리 실행 파일을 포함
  • 시스템 유지 관리 목적으로 시스템 관리자가 사용
  • ex) iptables, 재부팅, ifconfig, swapon

 

 

/srv

  • service의 줄임말으로 서버별 서비스 관련 데이터를 포함
  • ex) 웹 서버용 데이터 및 스크립트 등 시스템에서 제공하는 사이트별 데이터

 

 

/tmp

  • 시스템 및 사용자가 생성한 임시 파일이 포함된 디렉토리
  • 이 디렉토리에 있는 파일은 시스템이 재부팅될 때 삭제 됨

 

/usr

 

  • bin, sbin, lib, include, local, share, docs 그리고 소스코드가 포함된 secondary hierarchy

 

- usr/src: Linux 커널 소스, 헤더 파일 및 문서 위치

 

- usr/lib: 프로그램 및 패키지를 사용하기 위한 라이브러리 위치, /lib와 symlink되어 있는데 /lib는 /bin 또는 /sbin에서 필요한 라이브러리만 있고 그렇지 않은 라이브러리는 다 usr/lib에 있다고 생각

 

- usr/bin: /bin 파일과 symlink되어 있고 /bin에 있는 명령을 제외한 기본적인 명령어가 있다고 생각

 

- usr/sbin: /bin과 마찬가지로 /sbin과 symlink되어 있고 /sbin에 있는 명령을 제외한 시스템 관리를 위한 명령어

 

- usr/include: C 프로그램에서 포함되는 헤더 파일들이 위치

 

- usr/local: 소프트웨어를 로컬로 설치할 때 시스템 관리자가 사용하기 위한 것으로 시스템 소프트웨어가 업데이트 될 때 덮어쓰여지지 않도록 안전해야함. 밑의 사진을 보면 aws ssm plugin을 설치되있는 것을 확인할 수 있음.

 

/usr/local directory

 

 

 

/proc

  • 시스템 프로세스에 대한 정보를 포함
  • 프로세스 및 커널 정보를 파일로 제공하는 가상 파일 시스템
  • 일반적으로 시스템에 의해 즉시 자동으로 생성되고 채워짐

 

 

/var

  • 가변 데이터 파일을 포함
  • spool 디렉토리와 파일 관리 및 로깅 데이터, 임시 및 임시 파일이 포함
  • /var/log, /var/lock, /var/run 등등 일부는 다른 시스템 간에 공유할 수 없음.
  • /usr를 읽기 전용으로 마운트 할 수 있음.
  • 시스템 작동 중에 기록되는 /usr로 이동한 모든 항목은 /var에 위치해야함

 

 

 

 

이렇게 Linux 파일 시스템 계층 구조에 대해서 얘기를 해보았습니다. 많이 써서 익숙했던 폴더들도 있고 자주 사용하였는데 왜 여기에 저장되어 있을까 의문이 들던 디렉토리들에 대한 궁금증도 조금 해결되었습니다.

스스로 혼자 정리한거라 잘못된 내용이 있으면 글을 남겨 주면 감사하겠습니다

 

 

 

 

 

참고한 자료

https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch05.html#purpose31

 

Chapter 5. The /var Hierarchy

/var contains variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files. Some portions of /var are not shareable between different systems. For instance, /var/log, /var/lock, and /var

refspecs.linuxfoundation.org

https://www.geeksforgeeks.org/linux-file-hierarchy-structure/

 

Linux File Hierarchy Structure - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

https://unix.stackexchange.com/questions/309706/what-is-the-difference-between-dev-media-and-mnt

 

What is the difference between dev, media and mnt?

Hi there can someone tell me what is the difference between /dev, /media and /mnt? Are not they dictionaries for removable storage?

unix.stackexchange.com

https://unix.stackexchange.com/questions/74646/difference-between-lib-lib32-lib64-libx32-and-libexec

 

Difference between lib, lib32, lib64, libx32, and libexec

My 64 bit Ubuntu 13.04 system has the following directories in /: lib lib32 lib64 libx32 libexec In the /usr directory there is: lib lib32 libx32 libexec This seemed like something that could be

unix.stackexchange.com

'CS' 카테고리의 다른 글

[NETWORK] ARP란?  (0) 2023.05.13
[Database] SQL vs NoSQL  (0) 2021.12.07
[Database] Indexing이란?  (0) 2021.12.07