공부 기록/리눅스 기초

[리눅스 기초] 03 디렉터리와 파일

도도히히 2025. 10. 31. 09:34

 

파일의 구성요소

우분투: 모든 처리과정을 파일 단위로 처리하며 계층적 특성을 가짐

3개 충족요건: 파일 이름, I-node, 데이터 블록

파일 존재 가치: 3대 충족요건을 가져야 하는 전제 조건

 

파일 이름

  • 파일 이름은 사용자가 파일을 사용 목적에 맞도록 사용하고 해당 파일에 정확하게 접근할 수 있는 변별력 제공
  • 이와 같은 변별력은 파일을 조작하기 위한 과정에서도 활용
  • 만약 파일 이름을 정확히 파악할 수 없다면 다른 파일을 조작하여 시스템에 예상치 못한 결과 초래할 수 있음

 

I-node

  • Index Node라고 불리며 파일정보를 기술하는 데이터 구조
  • 파일의 데이터 블록이 디스크 상의 어느 주소에 위치하고 있는가에 대한 정보 기록
    • 파일의 종류, 파일의 소유권, 파일의 액세스 모드, 파일의 타임스탬프(파일 갱신일)
 

 

데이터 블록

  • 파일에서 데이터를 저장하는 블록
  • 일반 파일이나 디렉터리 파일의 데이터가 존재, 디스크 장치에 파일을 저장할 때 실제 데이터는 특별한 구분 없이 디스크에 저장
  • 파일 1과 파일 2가 디스크에 저장될 때 특별히 2개를 구분하지 않고 디스크에 차례대로 기록됨
  • 실제 데이터는 디스크의 어느 한 곳에 차례대로 쌓여 있음

리눅스의 파일 속성

  • r : 읽기 허용
  • w : 파일 쓰거나 수정 허용
  • x : 파일의 실행 허용. 디렉터리 경우 디렉터리 안으로 진입 가능

 

cf. touch [파일명] : 새로운 파일 만듦

소유자, 소유자와 같은 그룹의 사용자, 그 밖의 사용자 순서로 있음

ex. drwxrwxr-x : 현재 디렉터리이고, 소유자 그리고 소유자와 같은 그룹의 사용자는 는 읽기 쓰기 실행 모두 가능하며 그 밖의 사용자는 읽기와 실행만 가능

맨 앞이 d로 시작: 현재 디렉터리를 의미함

맨 앞이 -로 시작: 일반 파일을 의미함

 

ls -ial

  • 현재 디렉터리에 저장된 파일의 i-node 번호와 i-node에 들어 있는 파일 메타 정보 출력
  • 파일 이름과 i-node 번호는 디렉터리 항목에 들어 있는 정보가 출력된 것

 

파일의 종류

우분투에서 관리하는 모든 데이터는 파일로 인식

  • 현재 실행 중인 프로세스
  • 일반 파일
  • 하드웨어 등

우분투는 3개의 파일 종류를 가짐

  • 일반 파일
  • 디렉터리 파일
  • 특수 파일

파일은 사용자가 이용할 수 있는 데이터의 실체를 의미

 

일반 파일

  • 데이터를 관리하는 데 주로 사용되는 일상적인 파일
  • 각종 실행 파일이나 텍스트 파일, 이미지 파일, 프로그램 소스 파일 등 우분투에서 사용하는 대부분의 파일
  • 실행 파일이나 이미지 파일의 경우 데이터가 바이너리 형태로 저장

디렉터리 파일

  • 해당 디렉터리에 저장된 파일이나 하위 디렉터리에 대한 정보를 가짐
  • 일반 파일과 마찬가지로 디스크에 저장, 다른 파일을 조작하고 액세스하는데 필요한 정보 가짐

링크 파일

  • 유닉스와 리눅스에서는 링크(link)라는 개념을 도입해 여러 개의 파일 이름이 하나의 I-node에 연결되도록 수행
  • 실제 파일이나 디렉터리 혹은 또 다른 링크를 가리킴

cf. 링크를 추가한다는 것은 단순하게 디렉터리의 엔트리를 만드는 것임

ln : 링크 파일 생성

 

하드 링크

  • 원본 파일을 복사하여 원본 파일과 동일한 내용의 사본 파일을 만드는 것
  • 원본 파일과 링크 파일 2개가 서로 다른 파일로 취급, 둘 중 어느 하나를 삭제하더라도 나머지 하나는 그대로 남음
  • ln 원본파일 링크파일명

즉, 본체가 같고 서로 이름이 다름

 

심볼릭 링크

  • 통상적으로 사용되는 링크 파일, 소프트 링크라고도 함
  • Windows 운영체제에서 사용되는 ‘바로 가기’ 기능이나 ‘단축 아이콘’과 같은 역할 수행
  • ln -s 원본파일 링크파일명

이미 생성된 심볼릭 링크 파일을 삭제해도 원본 파일에는 어떠한 영향도 미치지 않음

원본이 삭제되어 존재하지 않을 경우 링크 파일이 깜빡거리면서 원본 파일이 없음을 알려줌

 

특수 파일

  • 우분투가 지원하는 파이프, 소켓, 디바이스(주변장치)를 의미함
  • Windows 운영체제에서 하드디스크가 C:, D:, E: 등으로 표시
  • 우분투에서는 /dev/hda1, … , /dev/hda3과 같이 사용

문서 파일

  • 키보드로 입력받은 값만 가지고 있으며 ASCII 문자로 구성
  • 문서를 작성할 때 해당 알파벳을 ASCII 문자로 매칭

이진 파일

  • 문자가 아닌 데이터 파일이 들어 있으며 0과 1의 값으로 구성
  • 프로그램을 코딩하여 컴파일을 수행하는 과정에서 생성되는 파일 (=실행 파일)

 

cf. 파일의 종류
-
일반 정규적인 파일
d
디렉터리 파일
l
심볼릭 링크 파일
b
블록 단위의 Read/Write 블록장치 파일
c
블록 단위의 Read/Write 문자장치 파일
p
프로세스 간 통신에 사용되는 특수 파일(파이프 파일)
s
네트워크 통신에 사용되는 특수 파일 (소켓 파일)

 

 

디렉터리와 파일 관리

디렉터리 계층 구조: 트리 형태

루트 디렉터리와 서브 디렉터리

  • 루트 디렉터리는 기본적으로 서브 디렉터리를 가지고 있으며 유닉스와 호환성 가짐
  • 파일명 뒤에 붙어있는 /는 디렉터리 파일을 의미하고 @는 심볼릭 링크 파일을 의미
  • ls -F / : 루트 디렉터리의 내용을 표시

작업 디렉터리

  • 사용자가 우분투에 접속하여 현재 사용하고 있는 디렉터리를 의미
  • 현재 작업 중인 디렉터리는 점(.)으로 표시, 위치 상세하게 확인하려면 pwd 명령 사용

홈 디렉터리

  • 각 사용자에게 할당되는 디렉터리, 사용자 계정을 처음 만들 때 지정
  • 서버 시스템 구조이므로 사용자별로 홈 디렉터리를 지정해줘야 함

cf. 홈 디렉터리의 표시는 **틸드(~)**로 함

 

절대 경로

  • 항상 루트(/) 디렉터리 위치부터 시작해야 함

상대 경로

  • 현재 디렉터리를 기준으로 경로명을 시작하며, 현재 디렉터리 위치에 따라 상대 경로명이 달라질 수 있음
  • ‘/’ 이외의 문자로 시작해야 함
  • 현재 자신이 속해 있는 디렉터리 ‘.’으로 표현, 바로 상위 디렉터리 ‘..’으로 표현

 

파일과 디렉터리명 생성 규칙

  • ‘/’는 파일명이나 디렉터리명에 사용할 수 X
  • 파일과 디렉터리 이름에는 알파벳, 숫자, -, _, .(마침표)만 사용할 수 있음
  • 공백, *, |, “, ‘, @, #, $, %, ^, & 등은 사용할 수 없음
  • 알파벳 대/소문자는 엄격하게 구별되며 다른 글자로 취급
  • 파일과 디렉터리명을 선언할 때 점(.)으로 시작하면 숨김 파일로 간주됨