[유닉스] 디렉토리 계층구조


디렉토리 계층 구조



디렉토리 계층 구조

  • 데이터를 효율적으로 관리하기 위해 시스템을 계층적인 트리 구조로 구성
  • 트리 구조 : 모양이 나무를 거꾸로 한 것과 유사
  • 파일이 나무의 잎에, 디렉토리가 나뭇가지에 해당
  • 루트(root) 디렉토리

    • 모든 디렉토리, 파일의 원조 및 시작
    • 슬래시(/) 기호로 표시

여러 가지 디렉토리

  • 상위 디렉토리는 기호 ..으로 표시
  • 모든 디렉토리의 최상위는 루트 디렉토리(/)
  • 루트 디렉토리 : 상위 디렉토리가 없는 유일한 디렉토리
  • 작업 디렉토리(working directory), 현재 디렉토리(current directory)

    • 현재 작업을 하고 있는 디렉토리
    • 기호 ‘.’로 표시

홈 디렉토리

  • 기호 틸드(~)로 표시
  • 다중 사용자 시스템에서 각 사용자에게 할당된 작업 영역
  • 파일의 생성, 삭제를 자유롭게 할 수 있는 디렉토리

리눅스의 계층구조 디렉토리



루트(/) 디렉토리

  • 리눅스 시스템의 최상위 디렉토리
  • 디렉토리 구조의 시작
  • 리눅스는 루트(/)를 기준으로 디렉토리를 생성
$ cd /
$ ls
bin etc lost+found opt run sys var
boot home media proc sbin tmp
dev lib mnt root srv usr
$

기본 실행 명령어 디렉토리 (/bin)

  • ‘binaries’, 리눅스 시스템에서 가장 많이 사용되는 디렉토리 중 하나
  • 기본 명령어 파일들이 2진수의 형태로 모여 있는 디렉토리
  • 대부분의 일반적인 명령어들 포함

시스템 운영 명령어 디렉토리 (/sbin)

  • ‘system binaries’, 시스템 관리(부팅, 복구, 보수 등)를 위한 명령어들
  • 시스템 운영에 필요한 명령어들 포함
  • 관리자 계정인 루트(root)만이 사용할 수 있는 명령어들로 구성

시스템 설정 파일 디렉토리 (/etc)

  • 리눅스 시스템에 대한 환경 설정과 관련된 파일 및 디렉토리
  • 사용자 관리를 위한 암호 관련 파일, 네트워크 정보를 보유한 파일 등 시스템 관리에 전반적인 파일들 존재

부팅 관련 파일 디렉토리 (/boot)

  • 리눅스 커널이 저장되어 있는 디렉토리
  • 각종 리눅스 부트에 필요한 부팅 지원 파일들

입출력 장치 연결 마운트 디렉토리 (/mnt)

  • ‘mount directory’, 각종 입출력 장치와 연결할 때 마운트하게 되면 해당 파일 시스템의 내용이 이 디렉토리에 저장됨
  • 가상 머신으로 리눅스 설치시 비어있음

임시 마운트 디렉토리 (/media)

  • CD/DVD 또는 FDD, USB 등이 임시로 마운트되는 역할 수행
  • 가상 머신으로 리눅스 설치시 비어있음

응용 패키지 프로그램 설치 디렉토리 (/usr)

  • 사용자가 사용할 응용 패키지 프로그램 설치시 사용
  • 윈도우 운영체제에서의 [Program Files]와 같은 역할
  • 시스템에 사용되는 각종 응용 프로그램들이 설치되는 디렉토리
  • 거의 모든 프로그램과 그에 관련된 명령어 및 라이브러리들 포함
  • X 윈도우 시스템 관련 파일들과 리눅스 커널 소스, 각종 C 언어 관련 헤더 파일 등 저장

공유 라이브러리 디렉토리 (/lib)

  • 프로그램들의 각종 라이브러리들 존재, 대부분 공유 라이브러리
  • 평소에는 파일 크기를 줄여서 존재, 라이브러리 실행시 풀어서 사용

일반 사용자들의 홈 디렉토리 (/home)

  • 시스템 계정을 사용하는 사용자들의 홈 디렉토리
  • FTP, www 등과 같은 서비스 디렉토리들 저장
  • 시스템에서 사용되지 않고, 원격지 상에서 시스템으로 접속을 시도하는 사용자들을 위한 공간으로 사용

시스템 디바이스 장치 파일 디렉토리 (/dev)

  • 시스템의 각종 장치들을 사용할 수 있도록 장치 드라이버들 저장
  • 리눅스에서는 각종 장치들을 하나의 파일로 취급
  • 시스템은 각 장치를 설치하는데 필요한 정보를 이 디렉토리에서 가져옴

가상 파일 시스템 디렉토리 (/proc)

  • 시스템의 각종 프로세스와 프로그램 정보 및 하드웨어적인 정보들 저장
  • 물리적인 하드디스크 용량을 사용하지 않고 커널에 의해 메모리에 저장됨

가변 자료 저장 디렉토리 (/var)

  • 시스템에서 사용되는 동적인 파일, 즉 변경되는 파일들 저장
  • 각종 시스템 로그 파일, 사용자 로그인에 대한 보안 기록 등

임시 파일 저장 디렉토리 (/tmp)

  • 프로그램 수행 과정에서의 임시 파일들 저장

리눅스에 없는 프로그램 추가 설치 디렉토리 (/opt)

  • 리눅스에서 제공되지 않는 프로그램을 추가로 설치할 경우 사용

복구 프로그램인 fsck에 의해 사용되는 디렉토리 (/lost+found)

  • 수행 중 파일시스템의 이상 유/무를 진단하고 복구하는 프로그램인 fsck(file system check)에 의해 사용되는 디렉토리
  • 일반 사용자 계정으로 로그인한 상태에서는 접근 불가
  • 관리자 계정인 root로 접속해야 디렉토리의 내용을 볼 수 있음
$ cd /lost+found
-bash: cd: /lost+found: Permission denied
$


디렉토리 계층 구조



디렉토리

  • 서로 연관이 있는 파일들을 하나의 그룹으로 만들어서 저장할 수 있도록 구분된 공간을 의미
  • 각 디렉토리의 이름은 “/”로 구별
  • 특정 파일을 지정할 때는 맨 마지막에 파일이름을 쓴다.
  • 파일시스템의 맨 상위 디렉토리를 root 디렉토리
  • root 디렉토리는 “/”로 표기

경로명(path name)

  • 파일이나 디렉토리의 전체 이름
  • 디렉토리 계층 구조에 있는 특정 파일이나 디렉토리의 위치를 나타내는 것
  • 디렉토리와 디렉토리, 디렉토리와 파일을 구별하는 구별자로 “/”를 사용
  • 경로명이 디렉토리 이름으로 끝나는 경우 제일 뒤에 “/”를 붙이거나 붙이지 않을 수 있음
  • 절대경로명과 상대경로명이 있음
  • 파일 이름이나 디렉토리 지정하는 방법도 절대경로명을 사용하거나 상대경로명을 사용하는 방법
  • 파일을 명시할 때, 별도의 경로명을 써주지 않으면 현재 디렉토리를 가리킴

절대경로명

  • 루트 디렉토리를 기준으로 파일의 위치를 나타낸 것
  • 루트 디렉토리부터 시작해서 특정 파일의 위치까지 이동하는데 거치는 모든 디렉토리의 이름 표시
  • 항상 “/”로 시작
  • 특정 파일을 가리키는 절대경로명은 항상 동일

상대경로명

  • 현재 디렉토리를 기준으로 파일의 위치를 나타낸 것
  • 현재 디렉토리부터 시작해서 하위로 내려가면 디렉토리 이름 추가
  • 루트를 향해 올라가면 “..”을 추가
  • “/” 이외의 문자로 시작
  • 상대경로명은 현재 디렉토리의 위치에 따라 달라짐

탐색 경로

  • 명령어를 실행시키면 리눅스는 명령어의 실행 파일이 있는 위치를 찾음
  • 탐색 경로 : 명령어를 어디에서 찾아야 할지 명시하는 것
  • 명령어가 존재하는 디렉토리가 탐색 경로에 없으면 명령어 이름만으로 실행시킬 수 없음

    • 절대 경로명을 다 써주어 실행시키거나
    • 현재 작업 디렉토리를 나타내는 “.”을 사용

명령 실행시 탐색 경로의 예

  • test 파일의 내용이 다음과 같은 경우
$ cat test
ls
date
cat test
$
  • 현재 작업 디렉토리가 탐색 경로에 지정되지 않았으므로 실행되지 않음
$ test
$
  • 현재 작업 디렉토리를 지정한 경우
$ ./test
Desktop Downloads Music Public Videos
Documents examples.desktop Pictures Templates
2015. 06. 01. () 13:34:25 KST
ls
date
cat test
$
  • 또는 절대경로명을 다 써줄 수 있음
$ /home/ksshin/test

기호로 디렉토리 이동

  • ~ : 홈 디렉토리로 이동
  • . : 현재 디렉토리 지정