[리눅스 기초] 루트디렉토리 구조

Harry The Great
해리의 유목코딩
4 min readJan 1, 2020

--

대략적으로는 어렴풋이 알고있었지만 리눅스에서 코딩하기의 일환으로 우분투 계열의 OS를 사용하면서 디렉토리들의 역활을 정리하고자 작성하였습니다.

리눅스 디렉토리 구조를 알기위해서는 먼저 모든것은 파일이다(Everything is a file)를 명심해야합니다. 이 말은 유닉스 프로그램의 모토로 이전 이전까지는 마우스, 키보드, 프린터마다 각각 다르게 처리했지만 유닉스에서는 각각의 장치를 파일로 처리하고 I/O Redirection을 이용해서 디렉토리 어디에서든 장치들과 입출력이 가능하도록 했습니다.

/bin & /sbin

bin폴더는 Binary의 약자로 OS의 최소한의 정상적인 구동을 위해 필요한 프로그램이 들어있는 폴더입니다. cat, chmod, chown, cp, date, echo, kill, ln, ls, mkdir, etx 와같은 기초적인 프로그램들이 포함됩니다. 또한 루트사용자, 일반사용자 모두 접근가능합니다.

sbin 폴더는 bin과 유사하지만 오직 루트유저만 실행할 수 있는 프로그램들이 들어있습니다.

/boot

부트로더와같이 시스템 부팅에 필요한 파일들이 위치합니다.

/cdrom

시디롬을 위한 마운팅 포인트지만 현재는 잘 사용되어지지않습니다.

/dev

device의 약자로 이전에 말했던 모든것은 파일이다 라는 모토에맞게 키보드, 마우스, 프린터등과같은 디바이스들을 파일 또는 디렉토리의 형태로 dev 폴더 안에 존재하기때문에 표준 입출력(ex. ‘cat /boot/vmlinuz > /dev/dsp’)을 통해 읽기 쓰기도 가능하며 디렉토리 어디에서든 접근할 수 있습니다.

/etc

etc 폴더는 대부분의 설정 파일들이 저장됩니다. 리눅스의 전신인 유닉스의 초창기에는 부팅과 관련한 모든 설정정보는 boot 폴더 디바이스와 관련된 설정 정보는 dev 폴더에 위치했지만 시간이 지나며 etcetera라는 이름의 etc 폴더를 만들어 설정 정보를 따로 보관했습니다. 이후 시간이 지나며 etc 뜻 그 자체처럼 시스템 전체에서 사용하는 설정과 같은 엑스트라 데이터들이 저장되는 폴더가 되었습니다.

/lib, /lib32, /lib64

커널모듈, 시스템에 필요한 라이브러리 등이 위치합니다.

/proc

prod에는 각 프로세스 이름에 따라 수많은 폴더들이 존재하고 현재 실행되는 프로세스에 대한 정보와 데이터가 담겨있습니다. 실제 디스크 공간에는 존재하지않는 가상의 디렉토리입니다. 현재 cpu에서의 사용값, IO포트 등등 프로세스에대한 다양한 정보가 들어있습니다.

/media & /mnt

두개 다 파일시스템이 마운팅되는 포인트라는 점에서는 비슷합니다. 하지만 Media는 OS에서 자동으로 마운팅해주는 포인트로 주로 사용되며 Mnt는 사용자가 직접 마운트하는 경로로 사용됩니다. 예를들어 컴퓨터에 USB꽂아 OS에 자동으로 마운팅된다면 주로 Media 폴더 내에 마운팅 포인트가 생성되지만 외부에 있는 디스크등을 직접 명령어를 통해 마운트한다면 Mnt 디렉토리에 위치하게됩니다.

/srv

srv 디렉토리는 서버를 위한 폴더입니다. 주로 FTP, SFTP, RSync와 같은 프로토콜을 이용하여 외부 사용자와의 공유를 위해 사용되며 다른디렉토리에비해 비교적 외부 사용자들이 쉽게 접근할 수 있습니다.

/sys

sys와 유사하며 실제 디스크의 물리적 영역이 아닌 RAM을 기반으로한 파일시스템입니다. 현재 커널 데이터에 대한 구조 속성등 현재 시스템 전반에 대한 내용을 제공합니다. 매번 다시 시작할때마다 새로 생성됩니다.

/tmp

세션정보나 혹은 워드프로세서에서 작업한다면 현재까지 저장되어있지 않은 현재 작업내용등이 저장됩니다.

/usr

universal system resource라고도 하지만 직접 Doc에서 찾아본 바로는 user가 맞습니다. 각 유저 이름에 맞는 폴더이름이 생성되어있으며 각 폴더마다 bin, sbin, shared, lib과같이 각 유저들이 사용할 수 있는 폴더들이 위치합니다. 주로 시스템에서 가장 많은 영역을 차지하며 루트유저와 자기 자신만 접근가능합니다. usr는 사실 하나의 파티션이 아니라 각각의 유저별로 다른 파티션으로 존재하기때문에 다른사용자들이 사용할 수 있도록 마운트할 수 있지만 이 경우 수정할수는 없습니다.

/opt

크롬브라우저, 안드로이드 스튜디오등과 같은 써드파티 어플리케이션에 대한 설치 디렉토리로 사용됩니다.

/var

기타 모든 다용도로 사용될 수 있는 파일들이 저장되며 로그파일, 데이터베이스 캐싱파일, 웹서버 이미지 파일등이 위치할 수 있으며 파일의 크기가 추후 계속 확장될 수 있을경우 더욱 적합합니다.

--

--

Harry The Great
해리의 유목코딩

Android & IOS Developer 😀 미디움 이외에 스니펫이나 디버그노트로 활용하는 https://www.harrymikoshi.com/ 블로그도 운영하고있습니다.