개요

디렉토리는 컴퓨팅에서 파일과 다른 디렉토리들의 그룹을 갖고 있는 파일 시스템 안의 존재물이다. 컴퓨터의 파일 시스템은 파일 캐비넷으로 표현될 수 있다. 여기서 높은 수준의 디렉토리들을 서랍이라고 부르고 낮은 수준의 하위 디렉토리들을 서랍 안에 있는 파일 폴더라고 부를 수 있다. 사실 디렉토리도 하나의 파일로써 존재한다. 각각의 데이터는 이름과 아이노드로 이루어진 Dictionary로 구성되어 있다.

역사적으로 현대의 몇몇 임베디드 장치들에서도 파일 시스템들은 디렉토리를 전혀 지원하지 못하거나, 하위 디렉토리를 허용하지 않는 평평한 디렉토리 구조만을 가지고 있다. 파일들을 포함하는 각각의 최상위 수준의 디렉토리들의 그룹만 있을 뿐이다. 유명한 일반 계급의 파일 시스템은 유닉스에서 비롯되었다. 이러한 종류의 파일 시스템은 데니스 리치의 초기 연구의 관심이었다.

현대에, 유닉스와 같은 시스템, 특히 리눅스에서는 디렉토리 구조가 파일 시스템 계급 표준으로 정의된다. 많은 운영 체제에서 프로그램들은 연결된 현재의 작업 디렉토리를 가지고 있는데 그 속에서 프로그램들이 실행된다. 일반적으로 프로그램이 접근하는 파일 이름들은 파일 이름들이 명확한 디렉토리 이름으로 지정되지 않는다면 이 디렉토리 안에 존재할 것으로 가정한다.

몇몇의 운영 체제들은 그들의 홈 디렉토리나 프로젝트 디렉토리에 사용자들이 접근하지 못하도록 막는다. 유닉스에서 디렉토리들은 파일 형식으로 간주한다.

디렉토리또한 하나의 파일로 간주한다. 따라서 디렉토리도 아이노드가 존재한다. 그러나 디렉토리는 데이터 블럭에 있는 데이터가 incode number와 name을 가지고 있는 체계화된 구조로 저장되게 된다. 따라서 kernel은 이러한 데이터를 읽어서 파일이 어떤 구조로 저장되어 있는지 알 수 있게 된다. 이떄 .은 스스로의 inode를 ..은 부모의 inode를 저장하여 참조할 수 있도록 한다.

UNIX 디렉터리 구조

위치 이름 설명
/ 루트
  • 최상위(루트) 디렉토리
  • 디렉토리들의 절대 경로를 표기할 때 이 디렉토리로 부터 시작함
/bin 바이너리
  • 이진파일(실행파일)
  • 기본적인 명령어가 저장된 디렉토리
  • 리눅스에서 자주 사용하는 mv, cp, rm등과 같은 명령어들이 이 디렉토리에 존재함
/boot 부트
  • 리눅스의 부트로더(Boot loader)가 있는 디렉토리임
/dev 디브(디바이스)
  • 시스템 디바이스(device)파일을 저장하고 있는 디렉토리
  • /dev/sda (하드디스크 장치파일), /dev/cdrom(CD-ROM)장치파일 등과 같은 장치 파일들이 여기에 위치함
/tmp 템프
  • 임시적으로 사용되는 파일들을 저장하는 위치
  • 어떤 유저나 이 공간을 사용할 수 있다.
/etc
  • 설정파일을 두는 디렉토리
/home
  • 사용자들의 홈디렉토리가 있는 곳
  • 사용자를 추가하면 사용자의 id와 동일한 디렉토리가 이곳에 자동으로 생성
/lib 립(라이브러리)
  • 커널이 필요로 하는 각종 라이브러리 파일, 커널 모듈파일 등이 존재하는 디렉토리
/media 미디어
  • DVD, CD-ROM, USB 등의 탈부착 가능한 장치들의 마운트 포인트로 사용하는 디렉토리
/mnt 마운트
  • 탈부착 가능한 장치들에 대한 마운트 포인트로 사용하는 디렉토리
/opt 옵트
  • 응용프로그램 패키지 설치 장소
  • 패키지 매니저가 자체적으로 설치/삭제를 수행함
/proc 프록(프로세스)
  • '가상파일시스템' 이라고 하는 곳으로 현재 메모리에 존재하는 작업들이 파일 형태로 존재하는 곳임
/root 루트
  • 관리자계정 root 사용자의 홈디렉토리
/sbin 시스템 바이너리
  • 시스템 이진파일(실행파일)
  • ifconfig, ethtool, halt, e2fsck와 같은 시스템 명령어들을 저장하고 있는 디렉토리
/usr 유저
  • 일반 사용자들이 사용하는 디렉토리
/var
  • 시스템 운용중 생성되었다가 삭제되는 데이터를 임시 저장하기 위한 공간으로 사용되는 디렉토리