강좌 첫화면으로 최근 글 보기(Post)
갈래별로 보기 categories




  10.2.파일, 디렉토리, 폴더



10.2.파일, 디렉토리, 폴더


10.2.1.디렉토리와 폴더의 차이


폴더는 거미줄 구조로 두 개의 폴더가 서로를 포함할 수 있습니다.

윈도에서는 파일과 폴더라는 개념을 이용해 파일을 다룹니다. 여러 가지 종류의 파일을 폴더에 저장합니다. 반면 도스나 리눅스에서는 파일과 디렉토리라는 개념을 이용해 파일을 다룹니다. 파일은 디렉토리 안에 저장됩니다.

사실 개념 상으로는 폴더와 디렉토리의 차이가 없습니다. 그렇지만 사용할 때 보면 폴더는 위아래 개념이 없는 수평 구조인 반면 디렉토리는 위아래 개념이 있는 수직적인 계층 구조라는 차이를 보입니다.

예를 들어 두 개의 폴더는 서로를 포함할 수 있습니다. A 폴더를 열며 안에 B 폴더가 있는데 B 폴더를 열면 그 안에 다시 A 폴더가 존재할 수 있습니다. 이처럼 서로를 포함할 수 있다는 것이 폴더의 특징입니다. 이 구조는 거미줄 구조와 비슷합니다. 여러 개의 폴더가 서로 유기적으로 구성된 형태를 떠올리면 됩니다.



**사진: 서로 공유할 수 있는 폴더


디렉토리는 나무 구조로 두 개의 폴더가 서로를 포함할 수 없습니다.

반면 디렉토리는 상위 디렉토리와 하위 디렉토리의 나무 구조를 이룹니다. 그래서 디렉토리 안에 포함된 디렉토리는 자신의 하위 디렉토리만 포함할 수 있으며 자기보다 상위 디렉토리는 포함하지 못합니다. 따라서 A 디렉토리 안에 B 디렉토리 속하고, B 디렉토리 안에 A 디렉토리가 속하는 일은 없습니다.



**사진: 트리 구조의 디렉토리 구조


10.2.2.디렉토리와 파일의 차이


디렉토리는 또 다른 디렉토리와 파일을 포함할 수 있는 파일입니다.

파일과 디렉토리 또는 파일과 폴더의 차이는 무엇일가요? 파일은 자신이 끝으로 파일 안에 다른 파일을 포함할 수 없습니다. 그렇지만 디렉토리는 자기 안에 여러 가지 종류의 파일과 디렉토리를 포함할 수 있습니다. 폴더 역시 폴더 안에 여러 가지 파일과 폴더를 포함할 수 있죠.

즉 파일이 결혼을 하지 못한 미혼남녀에 해당한다면 디렉토리는 자기 밑에 자식을 둘 수 있는 능력을 가진 기혼남녀에 해당하는 것입니다. 디렉토리는 자기 밑에 아들딸을 둘 수 있고 손자, 증손자를 둘 수 있습니다.



**사진: 폴더는 다른 폴더와 파일을 포함합니다.


파일은 다른 디렉토리나 파일을 포함할 수 없는 파일입니다.

디렉토리가 파일과 같기 때문에 디렉토리가 가지는 성질 역시 파일과 같습니다. 다만 인간세상에서 상투를 튼 기혼 남녀를 미혼 남녀와 달리 대접하는 것처럼 디렉토리와 파일이 지니는 권한과 세부적인 사용방법에서 약간의 차이가 있습니다.
단 여기서 말하는 파일은 매우 좁은 의미의 파일입니다. 즉 자료를 저장하는 디스크의 저장 단위로서 사용하는 파일을 뜻합니다. 넓은 의미의 파일에는 디렉토리도 포함되기 때문에 디렉토리를 포함하지 못하는 파일은 좁은 의미의 파일을 뜻한다고 보기 바랍니다.

10.2.3.루트 디렉토리, 현디렉토리, 서브 디렉토리, 홈디렉토리


디렉토리는 자식을 둘 수 있는 파일입니다.

디렉토리(Directory)란 파일과 같되 자신의 밑에 자식을 둘 수 있는 파일이라고 할 수 있습니다. 마치 파일이 결혼을 못해 자식을 둘 수 없는 사람이라면, 디렉토리는 결혼을 해서 자식을 둘 수 있거나 또는 이미 두고 있는 사람이라는 뜻입니다.

따라서 디렉토리는 자신을 뜻하는 현디렉토리(Currend Directory)와 자기를 포함하고 있는 위의 부모디렉토리(모디렉토리: Parent Directory)와 자기 밑에 딸린 자식디렉토리(자디렉토리: Child Directory) 등의 종속관계를 형성합니다.



**사진: 디렉토리는 종속 관계를 가집니다.


드라이브 이름이 뿌리 디렉토리입니다.

시조격인 제일 위의 모디렉토리를 뿌리 디렉토리(루트: Root Directory)라고 부르는데, 뿌리 디렉토리의 시작은 디스크의 제일 처음입니다. 그러니까 A: 드라이브가 있을 경우 A: 드라이브 자체가 루트 디렉토리에 해당합니다. C: 드라이브 역시 하나의 루트 디렉토리를 형성합니다. 그리고 루트 밑에 딸려 있는 디렉토리는 종속 디렉토리(Sub Directory)가 됩니다.

루트 디렉토리는 자신이 시조이므로 부모디렉토리를 안 가집니다. 성씨의 시조들이 하늘에서 뚝 떨어진 것처럼 루트 디렉토리는 부모 디렉토리가 없습니다. 자신이 최상위 디렉토리입니다.

반면 루트 밑에 속하는 모든 서브 디렉토리는 자신과 부모, 자식 디렉토리의 관계를 형성합니다.



**사진: 맨 처름 \ 표시 부분이 루트 디렉토리이고, 나머지는 서브 디렉토리입니다.


홈디렉토리는 로그인 했을 때 표시되는 디렉토리를 뜻합니다.

홈디렉토리는 자기 ID로 사용할 수 있는 디렉토리의 최상위 디렉토리를 뜻합니다. 리눅스는 여러 사람이 동시에 사용할 수 있는 시스템이라고 로그인한 다음에 자신에게 배정된 디렉토리만을 사용하게 됩니다. 이때 자신에게 배정된 디렉토리 중에서 가장 상위에 속하는 디렉토리를 홈디렉토리라고 부릅니다.



**사진: 웹호스팅 사용자의 홈디렉토리


10.2.4.트리 구조와 디렉토리의 상관 관계


디렉토리는 나무 구조를 가집니다.

디렉토리는 나무(Tree)구조를 가집니다. 나무구조란 나무의 큰 줄기에서 작은 줄기가 뻗어나오고 그 줄기에서 다시 작은 줄기들이 뻗어나오는 것과 비슷하다 해서 붙여진 이름입니다.
나무구조인 디렉토리 구조는 디렉토리 사이의 종속관계를 형성합니다. 하위 디렉토리는 상위 디렉토리에 종속되며, 또한 상위 디렉토리가 삭제되면 하위 디렉토리도 자동적으로 삭제되는 운명을 가집니다.

트리 구조는 상위 디렉토리와 하위 디렉토리의 종속 관계를 이룹니다.

트리 구조로 파일이 저장되는 경우 디렉토리는 다음과 같은 구조를 가집니다.

**표: 디렉토리 구조
C:-+- GAME --+-- PUZZLE --+- TETRIS
| | +- BADUK -- HT
| | +- CHESS
| +-- ACTION --+- VCAP
| +- VFIGHT
+- WORD --+- HWP
| +- HOON
+- UTIL --+- UTIL
+- WINCMD

위의 그림에서 각각의 상관 관계를 알아보겠습니다.

PUZZLE라는 디렉토리는 GAME 밑에 속한 디렉토리입니다. 그리고 PUZZLE는 TETRIS, BADUK, CHESS 디렉토리를 가지고 있습니다. 이때 C: 드라이브는 루트 디렉토리가 됩니다. 그리고 GAME은 C: 드라이브의 입장에서 보면 자식 디렉토리가 됩니다.

이를 GAME 입장에서 봅시다. GAME 입장에서 보면 C: 드라이브가 모 디렉토리입니다. 그리고 PUZZLE는 자식 디렉토리가 됩니다. TETRIS는 자식 중에서도 손자 뻘에 해당하는 디렉토리입니다. BADUK도 손자 뻘 디렉토리입니다. BADUK 밑에 있는 HT는 증손자 뻘이 됩니다. 이처럼 GAME 밑에 있는 모든 디렉토리를 GAME의 서브 디렉토리라고 합니다.



**사진: 종속 관계로 구성된 트리 구조의 디렉토리


서브 디렉토리는 수직 관계의 상위 디렉토리에 종속됩니다.

PUZZLE 입장에서 봅시다. 모 디렉토리는 GAME이 됩니다. C: 드라이브는 할아버지 뻘에 속하는 디렉토리입니다. 그리고 TETRIS와 BADUK은 자식 디렉토리가 됩니다. HT는 손자 뻘에 해당하는 디렉토리입니다. 따라서 PUZZLE는 TETRIS, BADUK, CHESS에 종속된 모든 디렉토리를 자신의 종속 디렉토리로 삼습니다.

이처럼 종속 디렉토리로 묶인 디렉토리는 상위 디렉토리와 운명을 같이 합니다. 상위 디렉토리가 삭제되면 하위 디렉토리는 자동적으로 함께 삭제됩니다. 반면 하위 디렉토리가 삭제되더라도 상위 디렉토리는 살아남을 수 있습니다. 또한 트리 구조인 디렉토리는 수직 관계의 종속관계를 형성하기 때문에 하위 디렉토리가 상위 디렉토리나 수평 관계의 디렉토리를 포함하지 못합니다. 이는 나중에 설명할 폴더와 가장 큰 차이점입니다.

기본적인 리눅스 디렉토리 구조

리눅스를 설치하면 루트 디렉토리 밑에 다음과 같은 디렉토리를 가집니다. 물론 어떤 리눅스를 설치했느냐에 따라서 디렉토리 구성 내용은 조금씩 다릅니다. 아래의 디렉토리 이름은 일반적으로 많이 사용하는 이름들입니다. 또한 root 권한을 가진 사용자가 아니라면 아래의 중요 파일이 담긴 디렉토리에 접근하지 못합니다. 그렇지만 리눅스의 디렉토리가 어떻게 구성되었는지 알아두면 도움이 되겠죠.

[보기] 일반적인 리눅스 디렉토리 구조

/bin/ 리눅스에 필요한 실행 파일들이 있습니다.
/boot/ 부팅에 필요한 파일, 커널과 관련된 이미지 파일이 있습니다.
/dev/ 하드웨어와 관련 파일이 있습니다.
/etc/ 기타 여러 가지 시스템 설정에 필요한 파일이 있습니다.
/home/ 일반 사용자들에게 할당된 홈 디렉토리가 있습니다. 보통 일반 사용자는 home 디렉토리 밑에 부여받은 디렉토리 안에서만 작업이 가능합니다.
/lib/ 시스템이 필요로 하는 라이브러리 파일이 있습니다.
/lost+found/ 파일시스템의 에러시 치료하는 곳으로 파티션마다 있습니다.
/mnt/ 마운트를 하는 디렉토리입니다.
/proc/ 실제로 사용하는 디렉토리가 아닙니다. 메모리, 커널이 사용하는 곳입니다.
/root/ root의 홈 디렉토리입니다.
/sbin/ 루트가 사용하는 기본 명령어가 있습니다.
/tmp/ 임시 디렉토리입니다. 스왑파일, 임시파일을 생성할 때 사용합니다.
/usr/ 여러 가지 프로그램이 설치되는 디렉토리입니다. 기본적으로 사용자가 프로그램을 설치하면 이 디렉토리에 설치됩니다. 안에는 또 다시 여러 개의 중요한 디렉토리가 있습니다.
/var/ 시스템과 관련된 파일이 있습니다. 로그 파일, 시스템 정보 관련 파일 들이 있습니다.




첫줄로(go top, go first line) 문화원첫화면으로(go dal site home) 강좌차림으로(go Chair) 사이트맵으로(go sitemap)




total chairpost