jam 블로그

[리눅스] 폴더 구조 본문

시스템/리눅스

[리눅스] 폴더 구조

kid1412 2010. 5. 31. 10:39
728x90

출처 : http://study.ibluerain.com/entry/Linux-Directory-구조

1. / 디렉토리



바로, 모든 디렉토리의 최상위에 해당하는 루트 디렉토리입니다. 리눅스를 비롯한 유닉스에서는 윈도우/DOS의 드라이브 개념이 없고, 최상위 디렉토리인 루트 디렉토리 아래에 모든것이 디렉토리로 구현됩니다. 루트 디렉토리 자체가 하나의 하드디스크 파티션이며, 루트 디렉토리 아래에 또다른 파티션이 하나의 디렉토리로 연결되게 됩니다. 루트 디렉토리가 담겨져 있는 하드디스크 파티션를 보통 루트 파티션이라고 부릅니다.



참고로, 이렇게 물리적/논리적 디스크 드라이브를 루트 디렉토리 계층 구조 아래에 연결하는 것을 마운트한다고 합니다. 아무튼, 유닉스에서는 모든 디렉토리나 파일은 반드시 루트 디렉토리 아래에 있게 됩니다.

2. /boot 디렉토리



이 디렉토리 아래에는 일반적으로 부팅 과정에 필요한 부트로더 프로그램 데이터와 같은 파일들이 포함됩니다. 보통 일반 유저가 건들 필요는 없습니다. 게다가 함부로 건드렸다가는 피를 볼수도 있으니....(덜덜덜)

3. /bin 디렉토리



가장 기본적인 시스템 유틸리티가 담겨져 있는 디렉토리입니다. 여기에는 명령 처리기(셸)인 sh와 디렉토리의 내용을 표시하는 명령인 ls, 파일을 카피하는 명령인 cp, 디렉토리를 만드는 명령인 mkdir등이 들어가 있습니다.

참고로, MS-DOS에서는 command.com에 기본적인 명령들이 내장된 것에 비해, 리눅스를 비롯한 유닉스에서는 이 모든것이 별도의 프로그램으로 분리되어 있습니다.

4. /dev 디렉토리



유닉스의 하이라이트라고 할 수 있는 dev디렉토리에 오신걸 환영합니다~. @_@ 유닉스의 특징중 하나가, 바로 모든것이 디렉토리와 파일로 추상화 된다는 것인데 이것은 컴터에 달려있는 모든 주변기기에도 마찮가지로 작용됩니다. @_@



즉, 1번 IDE 마스터 하드디스크는 /dev아래에 hda라는 파일로 표현됩니다. 사운드카드는 /dev/dsp와 같은 형태로 표현되지요. PS/2 마우스는 /dev/psaux로 표현됩니다. 1번 하드디스크의 2번 파티션은 hda2로 표현됩니다.



예전에는 이 /dev디렉토리는 완전 수동으로 관리되었습니다. 즉, /dev디렉토리에 없는 장치를 추가로 설치했다면, 그에 해당하는 /dev의 장치 노드를 수동으로 만들어 줘야 했지요.



이러한 수고를 덜기 위해서 대부분의 배포판은 미리 /dev 디렉토리 안에다가 수백개가 넘는 장치 파일을 미리 생성해 두기도 했습니다. -_-;;; 그당시 리눅스에서 /dev 디렉토리에 들어가서 ls 명령으로 디렉토리 내용을 살펴보면...정말 쓸데없는게 많았습니다. 심지어 IDE 하드디스크 노드 파일이 hda, hdb, hdc, hdd, hde..해서 무려 10개가 넘었을 정도였죠. -_-;;; 실제로 달린건 딸랑 하나뿐인데...



최근에는 devFS (이제 거의 사용되지 않습니다)라던지, uDev와 같은 /dev 디렉토리 자동 관리화 툴이 생겨서 많이 편리해졌지요.

5. /etc 디렉토리



가장 중요한 디렉토리중 하나입니다. 여기에는 리눅스 시스템의 모든 설정 파일이 담겨져 있습니다.



윈도우에서는 레지스트리 방식으로, 하나의 거대한 바이너리 방식의 설정 파일에 모든 시스템 설정을 담게 됩니다만, 리눅스에서는 /etc 디렉토리 아래에 각 분야별로 별도의 텍스트 파일로 설정이 저장됩니다.



이러한 방식은 윈도우의 레지스트리 방식에 비해서 다소 처리 속도가 느리다는 단점이 있습니다만, 최근의 빠른 컴터 속도로는 거의 차이가 없지요. 게다가, 레지스트리는 한번 꼬이면 윈도 다시 밀어버리는 수밖에 없지만, 이와 같은 텍스트 기반의 설정파일은 그냥 안전모드(리눅스에선 싱글모드)나 구조용 CD등으로 부팅해서 텍스트 에디터로 수동으로 손을 봐 줄 수 있다는 엄청난 장점이 있습니다.



물론, 초보자에게 있어선 그림의 떡이긴 합니다만...하지만, 한번 익숙해지면 헤어나지 못하는게 텍스트 기반의 설정 방식일겁니다.



이 /etc디렉토리에 대해서는 나중에 따로 강좌를 내도록 하겠습니다. (펑) 그만큼 중요한 디렉토리니깐요.

6. /home 디렉토리



윈도우의 Documents and Settings 디렉토리와 유사한 곳입니다. 즉, 사용하는 유저의 계정 디렉토리가 위치하는 곳이죠. 보통 유저의 계정은 /home/유저 아이디명/ 에 위치하게 됩니다. 윈도우와 마찮가지로, 각 계정당 설정 내용은 여기에 각 계정별로 저장되지요.

7. /lib 디렉토리



시스템의 핵심적인 라이브러리 파일들이 위치합니다. 윈도우즈의 Windows\System32와 비슷한 역할을 수행합니다.

8. /lost+found 디렉토리



파일 검사 도중, 파일시스템이 손상되어 파일 이름을 알수 없어진 파일들이 보관되는 곳입니다....간단히 말하자면, 윈도우 등에서 로스트 클러스터가 발생시 저장되는 FILE####.CHK파일과 같은 파일들이 저장되는 곳이죠.

최근에는 안전성이 강화된 저널링 파일시스템의 보급으로 여기엔 별로 들릴 필요가 없어졌습니다.

9. /mnt 디렉토리



보통, CD-ROM이나 플로피 디스크등의 외장형 미디어를 마운트할때 이 아래에 마운트합니다. 일반적으로 CD롬의 경우는 /mnt/cdrom 아래에 마운트해서 쓰지요.


10. /proc 디렉토리



초보자들을 골탕먹이는 proc디렉토리입니다. 이곳은 완전 100% 가상 파일로 이루어져 있습니다.



이곳에는 시스템의 각종 실제 사용중인 장치들이 파일의 형태로 추상화되어서 나타납니다. 각 장치의 인터럽트 정보와 디바이스ID와 같은게 여기에 표시되지요. 한마디로 말해서...윈도우의 장치관리자와 비슷한 역할을 합니다.



심지어, 메인 메모리조차 하나의 파일로 추상화 되어 표시되지요. (/proc/kcore) 이때, 그 것의 크기는 메인 메모리의 총 용량을 나타내게 됩니다. 즉, 512메가 램을 달았으면 512메가바이트 크기로 표시되고, 1기가 램을 달면 1기가로 표시됩니다.



가끔 초보자들이 이 메인 메모리를 나타내는 파일을 보고 "무슨 파일이 512메가나 되는거냐?"하고 지우려고 아무리 노력해도 안지워져서 절망하는 경우가 있습니다. (이런)

11. /sbin 디렉토리



/bin디렉토리와 마찮가지로, 시스템 유틸리티가 위치하는 곳입니다. 하지만, 여기에는 관리자만이 사용가능한 유틸리티만이 들어갑니다. 이곳은 관리자만이 사용할 수 있도록 퍼미션이 잡혀져 있지요.



보통 포맷을 하기 위한 mkfs명령이나, 파일 시스템을 검사하는 fsck, 파티션을 생성하는 fdisk와 같은 명령이 들어갑니다. 당연히 일반 유저들에게 공개해선 안되겠죠?

12. /tmp 디렉토리



이름 그대로, 시스템 사용중 생기는 임시파일들이 저장되는 곳입니다. 보통 매번 부팅시 초기화됩니다.

13. /usr 디렉토리



윈도우에 있어서 Program Files 디렉토리와 동일한 기능을 수행하는 디렉토리입니다. 일반적인 응용프로그램들은 이곳에 깔리죠. 이곳은 또다시 여러개로 분할되어 있습니다.

13-a. /usr/bin



응용프로그램의 실행 파일들이 위치합니다. 여기에는 실행파일만이 들어가는게 원칙입니다. 나머지는 다른 디렉토리에서 관리되지요.

13-b. /usr/include



개발자들을 위한, C/C++/ObjC등의 인클루드 헤더 파일 (*.h)들이 들어가는 곳입니다.

13-c. /usr/lib



응용프로그램의 개별 동적 라이브러리 파일은 여기에 들어갑니다.

13-d. /usr/local



이곳은 좀 특별한데...시스템의 응용프로그램 관리 인터페이스로 설치되지 않는, 소스코드 등으로부터 직접 컴파일한 프로그램은 보통 여기에 설치합니다. /usr/local아래에는 또다른 /usr의 하위 트리 구조 (bin, include, lib...)가 그대로 들어있습니다.


13-e. /usr/share



응용프로그램의 도움말 파일이나 각종 아이콘 파일등은 이곳에 들어갑니다. 그래픽 환경의 테마 역시 이곳에 저장되지요.

13-f. /usr/sbin



응용프로그램중에 관리자만 실행해야 하는 종류의 것들의 실행 파일은 /usr/sbin에 수납됩니다.

13-g. /usr/src



응용프로그램의 소스코드가 위치하는 곳입니다. 보통은 리눅스 커널의 소스코드가 이곳에 들어갑니다.

13-h. /usr/X11R6/



그래픽 환경에서 사용되는 응용프로그램들의 파일 전반이 이곳이 들어갑니다. 여기 아래에는 /usr 디렉토리의 일반적인 하부 구조 (bin, include, lib ,share)가 또다시 들어가 있습니다.

14. /var 디렉토리



시스템 실행시 생성되는 파일중, 임시파일로 치기에는 활용 시간이 긴 각종 부가적인 파일들이 이곳에 저장됩니다. 예를 들어,MySQL의 소켓 파일 (유저가 데이터베이스에 접속할 수 있게 해주는 가상의 네트워크 인터페이스 파일)이나 패키지 데이터베이스와 같은것들이 이곳에 저장됩니다.




겉으로 보기엔 상당히 복잡해 보입니다. 하지만, 익숙해지면, 정말로 편리한게 유닉스/리눅스의 파일 시스템 구조지요.



Comments