리눅스의 디렉토리구조

Linux 2007.08.29 23:11 Posted by 애플자라
여러분이 도스(이 글에서의 도스란 마이크로소프트의 윈도우즈95, 윈도우즈98, 윈도우스NT를 말합니다)를 윈도우를 처음 깔았을 때 하드디스크에는 C:\WINDOWS, C:\PROGRAM FILES, C:\MY DOCUMENT 라는 세 개의 디렉토리만 보실 수 있습니다. 참 체계적으로 관리한다는 생각이 들 겁니다. 운영체제는 C:\WINDOWS 에, 프로그램들은 C:\PROGRAM FILES 에, 데이터들은 C:\MY DOCUMENT 에 넣고 관리하니 얼마나 알기가 쉽습니까.

반면, 리눅스를 처음 깔았을 때, 루트 디렉토리로 이동하여 ls 명령을 한번 내려보면 무슨 디렉토리들이 그렇게 많은지... 정말 정신 산만해서 돌아가실 지경이 될 겁니다.

이 글의 목적이 도스와 리눅스의 디렉토리 구조를 비교하여 어느 것이 낫다라고 결정하는 것은 아니기 때문에 도스의 디렉토리 구조를 비판하지는 않겠습니다. 대신 리눅스의 디렉토리 구조가 복잡한 것은 유닉스 시스템의 유구한 전통에 의한 것이며 알고보면 무척이나 체계적인 것이라는 걸 설명하고자 하는 것이니까, 괜히 어렵게만 느껴졌던 리눅스의 디렉토리들을 한번 이 기회에 정복해보자는 마음을 가지시고 읽어보세요.

당연히 제가 어려운 내용은 모르므로 최대한 쉽게 설명할 겁니다. ^.^

일단 리눅스의 루트 디렉토리에 있는 것들을 나열해봅니다. 어떤 것들이 있는지부터 살펴보고 그 개개의 것들을 이야기할 것입니다. 알파벳 순서로 대충 보면...

/bin, /boot, /dev, /etc, /home, /lib, /mnt, /proc, /root, /sbin, /tmp, /usr, /var, ...

당장 이것들은 기본적으로 루트 디렉토리에 있게 되는 것들이고, 각각의 디렉토리 하부로 들어가면 또 엄청난 가지치기가 일어납니다. 장난이 아닙니다. 리눅스의 디렉토리 구조는 다른 말로 "트리 구조"라고도 합니다. "트리"는 TREE 입니다. 디렉토리의 상관 관계를 그림으로 그려보면 마치 나무를 거꾸로 그려놓은 듯한 그림이 그려지기 때문에 그런 이름이 붙었죠. 도스의 디렉토리들도 원래는 유닉스의 "트리 구조"에서부터 따온 것이기 때문에 여러분도 그렇게 낯선 것만은 아닐 듯 싶습니다.

/
이 디렉토리는 리눅스 시스템의 구조상 가장 최상위에 있는 디렉토리입니다. 모든 디렉토리들은 바로 이 루트 디렉토리의 하부에 존재하여야 하므로 만인의 위에 군림하는 시스템 관리자( root )와 같은 이름을 가지고 있습니다. 리눅스는 전통적으로 이 루트 디렉토리에는 파일을 두지 않습니다. 둔다고 해도 별 상관은 없지만, 이 루트 디렉토리는 다른 디렉토리 구조들을 담기 위한 공간으로만 쓰이는 것이 보통이지요. 비슷하지는 않지만 굳이 비유를 들자면, 도스의 C:\ 드라이브 자체를 의미하는 것이라고 할 수 있을지도 모르겠습니다.

/bin
bin 이란 binary 의 약자입니다. binary 는 이진 파일을 말합니다. 이진 파일이란 실행가능한 파일이라는 말입니다. 따라서 /bin 디렉토리에는 시스템이 부팅할 때 필요한, 또 부팅이 끝난 뒤에는 일반 사용자들로 사용할 수 있는 명령들을 포함하고 있습니다.
cd 명령으로 이곳에 들어가 그 내용을 살펴보면, 어마어마한 많은 파일들 때문에 아마도 놀래실 겁니다.

/boot
리눅스로 부팅할 때 우리는 보통 LILO 를 사용합니다. 도스냐, 리눅스냐를 선택하는 프로그램이죠. 리눅스로 부팅하기 위해서는 도대체 어디에 리눅스를 부팅시킬 수 있는 핵심 커널 파일이 있는지를 LILO 가 알아야 합니다. 우리는 그 커널을 이 /boot 디렉토리에 넣어둡니다. 다른데 있어도 상관은 없습니다. 하지만 체계적인 관리를 하고자 할 때는 거의 모든 사람이 이 /boot 디렉토리에 커널을 넣어둡니다.

/dev
리눅스는 모든 주변장치들(하드디스크, 키보드, 모니터, 기타 등등등...)을 하나의 파일 단위로 취급합니다. 그 장치들과 매치되는 파일들이 모두 여기에 모여있습니다. 마운트와 파티션 강좌 때 말씀드렸던 hda1, hda2... 등의 파일들도 모두 여기에 다 모여있습니다.

/etc
etc 는 우리말로 하면 "기타 등등..."에 해당되는 말이겠지만, 결코 이 디렉토리에 있는 내용들이 "기타" 정도로 치부될 수 없습니다. 이곳에는 수많은 환경 설정 파일들이 있습니다. 리눅스의 여러가지 설정을 변경하고 싶다면 그 중요한 파일들은 대부분 여기에 있다고 생각하시면 됩니다. 또한 도스의 autoexec.bat 파일처럼 시스템이 부팅하면서 처리해야 할 여러가지 실행 파일도 이곳에 있습니다.

/home
멀티 유저를 위한 운영체제, 리눅스의 특성이 잘 살아나는 디렉토리입니다. 당신의 리눅스 박스에는 여러 명의 사용자가 있을 겁니다. 우선 root 가 있을 것이구요, 당신 자신이 사용하는 ID 가 있을 것이며, 당신의 동생을 위한, 아버지를 위한, 어머니를 위한, 매일 놀러오는 친구를 위한 ID 가 각각 있을 것입니다. 없다구요? 으음... 그냥 있다고 가정을 합시다.
각 사용자들이 로그인을 했을 때, 그들은 넓은 리눅스의 세계에서 어디에 있게 될까요? 다시 말해서 그들이 ls 명령을 내렸을 때 자기의 화면에 나타나는 파일들은 하드디스크에서 어디에 있는 파일들일까요?
리눅스는 새로운 사용자를 추가하게 되면 그 사용자가 전적으로 자신의 작업을 할 수 있는 영역을 만들어줍니다. 이것을 그 사용자의 홈 디렉토리라고 하며, 바로 /home 디렉토리 아래에 그 사용자의 ID로 된 디렉토리가 그것입니다. 모든 리눅스 사용자들은 처음 로그인을 하게되면 자신의 홈 디렉토리에 위치하게 됩니다. 저같은 경우, ID를 shals로 쓰고 있기 때문에 제가 처음 로그인을 하게되면 전 /home/shals 디렉토리에 위치하게 되는 것이죠.
여러분이 위치한 디렉토리의 이름을 알아볼 때 쓰는 명령어는 pwd 입니다. "리눅스 기본 명령어"에 대한 강좌에서 소개해 드렸습니다. 처음 로그인 하자마자 우선 pwd 명령부터 실행해보시기 바랍니다. 여러분이 위치한 곳이 리눅스의 복잡한 하드디스크 구조 중에서 어느 부분인지 알아보시기 바랍니다.

/lib
이 디렉토리는 특별히 따로 설명드리지는 않겠습니다. 초보로서는 굳이 아실 필요까지는 없지 않을까 생각이 되는군요. 루트 파일시스템의 프로그램들이 공유하는 라이브러리들을 모아둔 디렉토리인데... 그냥 넘어가도 무방할 듯 합니다.

/mnt
시스템 관리자가 임시로 마운트하기 위한 마운트 포인트입니다. 따라서 /mnt 아래에는 프로그램이 설치되지 않도록 하죠. 이곳에 흔히 CD-ROM, 플로피 디스크 등을 마운트하여 사용합니다. 마운트에 대한 강좌는 따로 마련되어 있으니 참고하시기 바랍니다.

/proc
이곳에는 가상적인 파일시스템이 담겨 있습니다. 이 디렉토리에 있는 내용들은, 뭐랄까... 허깨비라고 할 수 있을 겁니다. 실재로는 하드디스크에 없거든요. 대신 커널에 의해 메모리에 생성되는 것이구요, 시스템의 여러가지 정보를 제공하는데 이용됩니다.
초보의 입장으로서는 굳이 자세하게 알 건 없다고 생각됩니다. 하지만 매우 중요한 디렉토리라는 점은 알아두셨으면 합니다.

/root
보통 일반 사용자들의 홈 디렉토리는 /home 디렉토리에 위치하게 됩니다. /home/shals, 이런 식으로 말이죠. 하지만 시스템 관리자는 특별한 사람이니까 홈 디렉토리가 따로 한 등급 높은 곳에 만들어집니다. 바로 이 /root 에 말입니다.

/sbin
이 디렉토리는 /bin 디렉토리와 거의 같습니다만 s 가 붙어서 일반 사용자들에게는 허락되지 않는 명령들( 다시 말해 root 만이 사용하는 명령들... )이 보관되는 곳이라는 차이점이 있습니다. 뭐, 그렇다고 일반 사용자들이 전혀 접근하지 못하는 건 아닙니다. 리눅스 박스마다 다르겠죠.

/tmp
임시 파일들을 위한 디렉토리입니다. 하지만 대부분의 경우 /var가 충분한 용량을 가지고 있으므로 부팅된 후에 동작하는 프로그램들은 /tmp가 아니라 /var/tmp를 사용하게 되죠. 이것도 크게 신경을 쓰실 필요는 없을 듯.

/usr
기본적인 리눅스의 유틸리티들은 /bin 디렉토리에 설치가 되는 반면, 각종 응용 프로그램들은 모두 이 /usr 디렉토리 아래에 설치됩니다. 또한 우리가 새로 설치하는 프로그램들도 이 디렉토리 아래에 설치하는 것이 표준 구성입니다. 그래서 이 디렉토리의 용량을 점검해보면 아주 크죠. X 윈도우 시스템, 매뉴얼 페이지를 비롯한 여러가지 문서 파일들, C 언어를 지원하기 위한 갖가지 파일들 모두 이 디렉토리에 설치됩니다.

/var
이곳에는 메일, 뉴스 그룹, 프린팅 등을 위한 spool 디렉토리, 로그 파일, groff 로 포맷된 매뉴얼 페이지, 임시 파일 등, 수시로 변경되는 파일들이 저장됩니다. 디렉토리의 용량이 시스템이 작동하는 동안 계속적으로 변하게 되죠.

이상으로서 루트 디렉토리( / ) 아래에 있는 디렉토리들에는 대충 어떠한 것들이 있는지 아주 간략하게 보았습니다. 이 정도만 가지고서야 어디 뭐 해먹겠습니까만, 그래도 모르는 것보다는 낫겠죠?

'Linux' 카테고리의 다른 글

Proftp 상위디렉토리 이동막기  (0) 2007.08.29
* Proftpd(ftp daemon) 설치  (0) 2007.08.29
리눅스의 디렉토리구조  (0) 2007.08.29
vi 초간단 매뉴얼  (0) 2007.08.29
zterm & ssh  (0) 2007.08.29
리눅스 기초 명령어  (0) 2007.08.28