Linux / 리눅스 디렉토리 구조와 주요 디렉토리별 용도

리눅스는 파일과 디렉토리를 일정한 기준에 따라 배치합니다. 처음 리눅스를 접하면 /etc, /var, /usr, /proc 같은 디렉토리가 각각 무엇을 의미하는지 헷갈릴 수 있습니다.

핵심만 먼저 정리하면 설정 파일은 /etc, 로그와 가변 데이터는 /var, 프로그램과 라이브러리는 /usr, 사용자 파일은 /home에 주로 저장됩니다.

이 글에서는 리눅스 주요 디렉토리별 용도와 함께, 디렉토리 이름이 약자인 경우 어떤 의미인지 정리합니다.

리눅스 주요 디렉토리 한눈에 보기

디렉토리 이름의 의미 주요 용도
/ Root 리눅스 파일시스템의 최상위 디렉토리
/bin Binary 기본 명령어 실행 파일
/boot Boot 커널과 부트로더 등 부팅 관련 파일
/dev Device 디스크, 터미널 등 장치 파일
/etc 전통적으로 et cetera에서 유래 시스템과 서비스 설정 파일
/home Home 일반 사용자 홈 디렉토리
/lib Library 공유 라이브러리
/lib64 64-bit Library 64비트 시스템용 공유 라이브러리
/media Media USB, CD/DVD 등 이동식 장치 마운트
/mnt Mount 파일시스템을 임시로 마운트하는 위치
/opt Optional 추가 설치 프로그램
/proc Process 프로세스와 커널 정보를 제공하는 가상 파일시스템
/root Root root 사용자의 홈 디렉토리
/run Run 부팅 후 생성되는 런타임 데이터
/sbin System Binary 시스템 관리용 명령어
/srv Service 서버가 제공하는 서비스 데이터
/sys System 장치와 커널 정보를 제공하는 가상 파일시스템
/tmp Temporary 임시 파일 저장
/usr Unix System Resources 프로그램, 명령어, 라이브러리, 공유 데이터
/var Variable 로그, 캐시 등 계속 변하는 데이터

/ - 루트 디렉토리

/는 리눅스 파일시스템의 가장 위에 있는 최상위 디렉토리입니다.

Windows의 드라이브 개념과 달리 리눅스에서는 모든 디렉토리와 파일이 / 아래에 연결됩니다.

/
├── bin
├── boot
├── dev
├── etc
├── home
├── usr
└── var

/루트 디렉토리라고 부르며, root 사용자 계정의 홈 디렉토리인 /root와는 다른 개념입니다.

/bin - 기본 명령어

binBinary의 약자입니다.

시스템을 사용하는 데 필요한 기본 명령어의 실행 파일이 저장됩니다. 대표적으로 ls, cp, mv, cat 등의 명령어가 있습니다.

ls /bin

최근의 많은 리눅스 배포판에서는 /bin이 실제 디렉토리가 아니라 /usr/bin을 가리키는 심볼릭 링크로 구성됩니다.

ls -ld /bin

/boot - 부팅 관련 파일

/boot에는 리눅스 시스템을 부팅하는 데 필요한 커널과 부트로더 관련 파일이 저장됩니다.

대표적인 파일과 디렉토리는 다음과 같습니다.

/boot/vmlinuz-...
/boot/initramfs-...
/boot/grub2/

커널 업데이트나 GRUB 부트로더 설정을 변경할 때 주로 확인하게 되는 디렉토리입니다.

/dev - 장치 파일

devDevice의 약자입니다.

리눅스에서는 하드디스크, SSD, 터미널 등의 장치를 파일 형태로 표현합니다.

/dev/sda
/dev/sdb
/dev/nvme0n1
/dev/tty
/dev/null

예를 들어 /dev/sda는 디스크 장치를 나타낼 수 있고, /dev/null은 입력된 데이터를 버리는 특수 장치 파일입니다.

/etc - 시스템 설정 파일

/etc는 리눅스 서버를 관리할 때 가장 많이 사용하는 디렉토리 중 하나입니다.

운영체제와 각종 서비스의 설정 파일이 주로 저장됩니다.

/etc/passwd
/etc/fstab
/etc/hosts
/etc/ssh/sshd_config

SSH, Apache, Nginx, 네트워크, 사용자 계정 등 다양한 설정을 변경할 때 /etc 아래의 파일을 수정하게 됩니다.

/home - 일반 사용자 홈 디렉토리

/home은 일반 사용자의 개인 파일과 설정을 저장하는 디렉토리입니다.

예를 들어 john이라는 사용자를 생성하면 일반적으로 다음과 같은 홈 디렉토리가 만들어집니다.

/home/john

사용자가 로그인하면 기본 작업 위치 역시 자신의 홈 디렉토리가 됩니다.

/lib, /lib64 - 공유 라이브러리

libLibrary의 약자입니다.

리눅스의 기본 프로그램과 명령어를 실행하는 데 필요한 공유 라이브러리가 저장됩니다.

64비트 시스템에서는 /lib64 디렉토리를 볼 수 있습니다.

최근 리눅스 배포판에서는 /lib, /lib64가 각각 /usr/lib, /usr/lib64 등을 가리키는 심볼릭 링크인 경우가 많습니다.

/media - 이동식 장치 마운트

/media는 USB 메모리, CD, DVD와 같은 이동식 저장장치를 마운트할 때 사용하는 위치입니다.

데스크톱 리눅스에서는 USB 장치를 연결했을 때 /media 또는 /run/media 아래에 자동으로 마운트되는 경우가 많습니다.

/mnt - 임시 마운트

mntMount에서 유래한 이름입니다.

관리자가 디스크나 네트워크 파일시스템을 임시로 마운트할 때 주로 사용합니다.

mount /dev/sdb1 /mnt

/media가 USB 같은 이동식 장치의 자동 마운트에 많이 사용된다면, /mnt는 관리자가 직접 파일시스템을 임시 마운트할 때 사용하는 경우가 많습니다.

/opt - 추가 설치 프로그램

optOptional의 의미를 가집니다.

리눅스 배포판의 기본 패키지 구조와 별도로 설치되는 상용 프로그램이나 서드파티 애플리케이션이 주로 위치합니다.

/opt/application/
/opt/company/product/

/proc - 프로세스와 커널 정보

procProcess를 의미합니다.

/proc는 실제 디스크에 데이터를 저장하는 일반적인 디렉토리가 아니라, 리눅스 커널이 시스템 정보를 파일 형태로 제공하는 가상 파일시스템입니다.

CPU 정보는 다음 명령어로 확인할 수 있습니다.

cat /proc/cpuinfo

메모리 정보는 다음과 같이 확인합니다.

cat /proc/meminfo

프로세스 ID가 1234라면 /proc/1234 디렉토리에서 해당 프로세스에 대한 다양한 정보를 확인할 수 있습니다.

/root - root 사용자의 홈 디렉토리

/root는 시스템 관리자 계정인 root 사용자의 홈 디렉토리입니다.

일반 사용자 → /home/user
root 사용자 → /root

루트 디렉토리인 /와 root 사용자의 홈 디렉토리인 /root는 서로 다른 의미입니다.

/run - 런타임 데이터

/run에는 시스템이 부팅된 이후 서비스와 프로세스가 사용하는 임시 런타임 정보가 저장됩니다.

PID 파일, 소켓, 서비스 상태 정보 등이 대표적입니다.

/run/
/run/user/
/run/systemd/

일반적으로 /run의 데이터는 메모리에 저장되며 시스템을 재부팅하면 초기화됩니다.

/sbin - 시스템 관리 명령어

sbin은 일반적으로 System Binary의 의미로 사용됩니다.

시스템 관리에 필요한 명령어가 위치합니다.

/sbin/reboot
/sbin/fsck

최근 리눅스 배포판에서는 /sbin/usr/sbin을 가리키는 심볼릭 링크로 구성되는 경우가 많습니다.

/srv - 서비스 데이터

srvService를 의미합니다.

웹 서버나 FTP 서버 등 시스템이 외부에 제공하는 서비스 데이터를 저장하기 위한 디렉토리입니다.

/srv/www/
/srv/ftp/

다만 실제 서비스 데이터의 위치는 배포판이나 관리자의 설정에 따라 달라질 수 있으며, 웹 서버의 경우 /var/www를 사용하는 경우도 많습니다.

/sys - 시스템과 장치 정보

sysSystem을 의미합니다.

/sys/proc처럼 실제 디스크 디렉토리라기보다 커널이 제공하는 가상 파일시스템입니다.

주로 장치, 드라이버, 커널 객체 등에 대한 정보를 확인할 때 사용합니다.

ls /sys/class

CPU, 네트워크 인터페이스, 저장장치 등의 정보를 확인하거나 일부 커널 속성을 제어할 때 사용됩니다.

/tmp - 임시 파일

tmpTemporary의 약자입니다.

프로그램이나 사용자가 일시적으로 필요한 파일을 저장하는 공간입니다.

/tmp

시스템 정책에 따라 재부팅하거나 일정 시간이 지나면 파일이 삭제될 수 있으므로 중요한 데이터를 저장하는 용도로 사용해서는 안 됩니다.

/usr - 프로그램과 시스템 리소스

/usr는 리눅스에서 매우 큰 비중을 차지하는 디렉토리입니다.

현대적인 리눅스 환경에서는 일반적으로 Unix System Resources라는 의미로 설명하며, 프로그램 실행 파일, 라이브러리, 문서, 공유 데이터 등이 저장됩니다.

디렉토리 용도
/usr/bin 일반 명령어와 프로그램
/usr/sbin 시스템 관리용 프로그램
/usr/lib 공유 라이브러리
/usr/lib64 64비트 공유 라이브러리
/usr/share 문서, 아이콘 등 아키텍처에 독립적인 공유 데이터
/usr/local 관리자가 직접 설치한 프로그램

특히 /usr/local은 패키지 관리자가 설치한 프로그램과 관리자가 직접 설치한 프로그램을 구분하는 데 유용합니다.

/var - 계속 변하는 데이터

varVariable의 약자입니다.

시스템을 운영하면서 계속 생성되거나 크기가 변하는 데이터를 저장합니다.

/var/log
/var/cache
/var/lib
/var/spool

/var/log

시스템과 서비스의 로그 파일이 저장됩니다.

ls /var/log

/var/cache

프로그램이 성능 향상을 위해 사용하는 캐시 데이터를 저장합니다.

/var/lib

서비스와 애플리케이션이 지속적으로 사용하는 상태 데이터가 저장됩니다.

/var/spool

메일, 프린트 작업, 예약 작업처럼 처리를 기다리는 데이터를 저장하는 데 사용됩니다.

서버에서는 특히 /var/log의 로그 파일이 계속 증가하면서 디스크 공간을 많이 차지할 수 있으므로 주기적으로 사용량을 확인하는 것이 좋습니다.

리눅스 디렉토리 쉽게 외우는 방법

처음부터 모든 디렉토리의 용도를 외울 필요는 없습니다. 서버 관리에서 자주 사용하는 디렉토리부터 다음과 같이 기억하면 편합니다.

/etc      → 설정 파일
/var      → 로그와 계속 변하는 데이터
/home     → 일반 사용자 데이터
/root     → root 사용자 홈
/usr      → 프로그램과 라이브러리
/tmp      → 임시 파일
/dev      → 장치
/proc     → 프로세스와 커널 정보
/sys      → 시스템과 장치 정보
/boot     → 부팅 파일
/mnt      → 임시 마운트
/opt      → 추가 설치 프로그램

특히 처음에는 /etc는 설정, /var는 로그, /usr는 프로그램, /home은 사용자 파일이라는 네 가지를 먼저 기억하면 실제 리눅스 관리에 도움이 됩니다.

리눅스 디렉토리 구조 요약

리눅스 디렉토리는 각 위치마다 비교적 명확한 역할이 있습니다. 시스템 설정은 /etc, 로그와 가변 데이터는 /var, 프로그램과 라이브러리는 /usr, 사용자 파일은 /home에 주로 저장됩니다.

또한 /proc/sys는 일반적인 디스크 디렉토리가 아니라 커널 정보를 제공하는 가상 파일시스템이라는 점도 함께 알아두면 좋습니다.

리눅스 서버를 관리하다 보면 이러한 디렉토리를 계속 접하게 되므로, 경로를 단순히 외우기보다는 각 디렉토리가 어떤 종류의 데이터를 저장하는지 이해하는 것이 더 효과적입니다.