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 - 기본 명령어
bin은 Binary의 약자입니다.
시스템을 사용하는 데 필요한 기본 명령어의 실행 파일이 저장됩니다. 대표적으로 ls, cp, mv, cat 등의 명령어가 있습니다.
ls /bin
최근의 많은 리눅스 배포판에서는 /bin이 실제 디렉토리가 아니라 /usr/bin을 가리키는 심볼릭 링크로 구성됩니다.
ls -ld /bin
/boot - 부팅 관련 파일
/boot에는 리눅스 시스템을 부팅하는 데 필요한 커널과 부트로더 관련 파일이 저장됩니다.
대표적인 파일과 디렉토리는 다음과 같습니다.
/boot/vmlinuz-... /boot/initramfs-... /boot/grub2/
커널 업데이트나 GRUB 부트로더 설정을 변경할 때 주로 확인하게 되는 디렉토리입니다.
/dev - 장치 파일
dev는 Device의 약자입니다.
리눅스에서는 하드디스크, 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 - 공유 라이브러리
lib는 Library의 약자입니다.
리눅스의 기본 프로그램과 명령어를 실행하는 데 필요한 공유 라이브러리가 저장됩니다.
64비트 시스템에서는 /lib64 디렉토리를 볼 수 있습니다.
최근 리눅스 배포판에서는 /lib, /lib64가 각각 /usr/lib, /usr/lib64 등을 가리키는 심볼릭 링크인 경우가 많습니다.
/media - 이동식 장치 마운트
/media는 USB 메모리, CD, DVD와 같은 이동식 저장장치를 마운트할 때 사용하는 위치입니다.
데스크톱 리눅스에서는 USB 장치를 연결했을 때 /media 또는 /run/media 아래에 자동으로 마운트되는 경우가 많습니다.
/mnt - 임시 마운트
mnt는 Mount에서 유래한 이름입니다.
관리자가 디스크나 네트워크 파일시스템을 임시로 마운트할 때 주로 사용합니다.
mount /dev/sdb1 /mnt
/media가 USB 같은 이동식 장치의 자동 마운트에 많이 사용된다면, /mnt는 관리자가 직접 파일시스템을 임시 마운트할 때 사용하는 경우가 많습니다.
/opt - 추가 설치 프로그램
opt는 Optional의 의미를 가집니다.
리눅스 배포판의 기본 패키지 구조와 별도로 설치되는 상용 프로그램이나 서드파티 애플리케이션이 주로 위치합니다.
/opt/application/ /opt/company/product/
/proc - 프로세스와 커널 정보
proc는 Process를 의미합니다.
/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 - 서비스 데이터
srv는 Service를 의미합니다.
웹 서버나 FTP 서버 등 시스템이 외부에 제공하는 서비스 데이터를 저장하기 위한 디렉토리입니다.
/srv/www/ /srv/ftp/
다만 실제 서비스 데이터의 위치는 배포판이나 관리자의 설정에 따라 달라질 수 있으며, 웹 서버의 경우 /var/www를 사용하는 경우도 많습니다.
/sys - 시스템과 장치 정보
sys는 System을 의미합니다.
/sys도 /proc처럼 실제 디스크 디렉토리라기보다 커널이 제공하는 가상 파일시스템입니다.
주로 장치, 드라이버, 커널 객체 등에 대한 정보를 확인할 때 사용합니다.
ls /sys/class
CPU, 네트워크 인터페이스, 저장장치 등의 정보를 확인하거나 일부 커널 속성을 제어할 때 사용됩니다.
/tmp - 임시 파일
tmp는 Temporary의 약자입니다.
프로그램이나 사용자가 일시적으로 필요한 파일을 저장하는 공간입니다.
/tmp
시스템 정책에 따라 재부팅하거나 일정 시간이 지나면 파일이 삭제될 수 있으므로 중요한 데이터를 저장하는 용도로 사용해서는 안 됩니다.
/usr - 프로그램과 시스템 리소스
/usr는 리눅스에서 매우 큰 비중을 차지하는 디렉토리입니다.
현대적인 리눅스 환경에서는 일반적으로 Unix System Resources라는 의미로 설명하며, 프로그램 실행 파일, 라이브러리, 문서, 공유 데이터 등이 저장됩니다.
| 디렉토리 | 용도 |
|---|---|
| /usr/bin | 일반 명령어와 프로그램 |
| /usr/sbin | 시스템 관리용 프로그램 |
| /usr/lib | 공유 라이브러리 |
| /usr/lib64 | 64비트 공유 라이브러리 |
| /usr/share | 문서, 아이콘 등 아키텍처에 독립적인 공유 데이터 |
| /usr/local | 관리자가 직접 설치한 프로그램 |
특히 /usr/local은 패키지 관리자가 설치한 프로그램과 관리자가 직접 설치한 프로그램을 구분하는 데 유용합니다.
/var - 계속 변하는 데이터
var는 Variable의 약자입니다.
시스템을 운영하면서 계속 생성되거나 크기가 변하는 데이터를 저장합니다.
/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는 일반적인 디스크 디렉토리가 아니라 커널 정보를 제공하는 가상 파일시스템이라는 점도 함께 알아두면 좋습니다.
리눅스 서버를 관리하다 보면 이러한 디렉토리를 계속 접하게 되므로, 경로를 단순히 외우기보다는 각 디렉토리가 어떤 종류의 데이터를 저장하는지 이해하는 것이 더 효과적입니다.