Linux _ 3. 파일 및 디렉토리 구조 (1)

WONY_yoon·2025년 10월 19일
post-thumbnail

KOREA IT LINUX 과정

리눅스 네번째 시간 (1)

<< 파일 유형 >>

1. 파일 구조

  • 리눅스 시스템의 파일 구조는 'filename', 'inode(index node)', 'Data Block' 로 구성
  • 파일 이름은 중복되어서는 안됨
  • 대소문자를 구분함
  • inode는 파일의 속성 정보와 데이터 블럭을 포인트하는 주소정보를 갖고 있음
  • 'ls -l'명령어를 이용하여 확인 가능
  • 'Data Block'에는 실제 파일의 데이터가 저장되어 있음
  • 파일 유형 : 일반 파일, 디렉토리 파일, 링크 파일, 장치 파일 등
    → 장치 파일 : 데이터를 저장하지 않고 장치접근을 관리하기 위한 제어 접근 기능 제공
  • 'ls -l' 명령어 사용의 다양한 예
    → 'ls -l /etc/issue'→ 'ls -ld' : 'd'로 출력되면 디렉토리 파일→ 'ls -ld /bin' : 'l'로 출력되면 심볼릭 링크 파일 → 'ls -l /dev/sda' : 'b'로 출력되면 블록 장치 파일→ 'ls -l /dev/tty' : 'c'로 출력되면 캐릭터 장치 파일

2. 파일 유형 확인

  • 'file' 명령어를 이용하여 각각의 파일 유형 확인 가능
    → 일반 파일 유형 확인 : 'cat' 명령어 활용하면 내용 확인까지 가능
    → 'strings'명령어 이용하면 내용 확인 가능 / 이상한 기호 없이 확인 가능
    → 디렉토리 파일 유형 확인
    → 링크 파일 유형 확인
    → 장치 파일 유형 확인

<< 파일 구조 >>

1. 파일 이름

  • 파일에 접근하기 위해 사용하며, 같은 디렉토리 안에서 파일 이름이 중복되면 안됨
  • 파일 이름 설정 규칙 존재
    → 최대 255글자 까지만 사용 가능
    → 문자와 숫자를 사용할 수 있으며 대소문자 구분 가능
    → .(Dot), _(Underbar), -(Dash)와 같은 특수문자 사용 가능
    → .(Dot)으로 시작하는 파일은 숨긴 파일이며, 시스템 환경 파일로 사용→ 파일 이름에 공백 또는 탭 사용을 권장하지 않음

2. inode

  • inode 에는 파일에 대한 메타 정보 저장되어 있으며 각각의 고유한 inode 번호 할당
  • 'df -i' 명령어 실행 시, inode의 용량 확인 가능
    → 파일 종류(File Type)
    → 파일 퍼미션 모드(File Perission Mode)
    → 파일 하드링크 수(Hard Link Count)
    → 파일 소유자 및 그룹(File Ownership, Groupship)
    → 파일 크기(Bytes, 할당된 또는 사용중인 데이터 블럭 수)
    → 마지막 접근 시간(Access Time), 수정 시간(Modification Time, Changed Time)

3. Data Block

  • 일반 파일 : 파일의 내용 저장 (ex. ASCII TEXT, 바이너리 데이터, 이미지 데이터 등)
  • 디렉토리 파일 : 디렉토리 안에 있는 파일 이름과 디렉토리 이름 저장
  • 장치 파일 : 장치의 주-디바이스 번호와 부-디바이스 번호 저장 → 주-디바이스 번호 : 8 / 부-디바이스 번호 : 0
  • 파일 안에 데이터 있는 것도 아님!
  • 디렉토리 안에 파일들이 있는 것도 아님!
  • 데이터는 데이터 블록에 저장되는 것임!
  • 사실은 다 분산되어서 저장되는 것이고, 출력되었을 때 이쁘게 나올 뿐!

<< 디렉토리 파일 >>

  • 실습 전 초기 설정
  • 일반 파일 확인해보기 : Data Block 에 저장되어있는 정보
  • inode에는 'ls-ld test' 명령어를 사용했을 때 나온 결과값이 저장 됨
    → 'ls -i' 에서 test의 번호와 'ls -ai test'로 확인한 'Data Block'과 첫 번째 것과 동일
  • HardLink 수 확인→ 4개의 파일이 존재하고 있는 것 확인 가능
  • 해당 파일들의 구조

<< 링크 파일 >>

1. 하트 링크 파일

  • 하드링크 파일은 원본 파일과 같은 데이터 사용
  • 하드링크 파일과 원본 파일의 inode 번호 동일 / 원본 및 사본의 개념 없음
  • 하드링크 파일은 'ln' 명령어를 이용하여 원본파일을 통해서 생성
  • 디렉토리는 하드링크 파일을 생성할 수 없음
  • 원본 파일 'file1'에 대한 하드 링크 파일 'file11' 생성
    → 'echo' 명령어 활용하여 'file1' 생성 → 'ln' 명령어 활용하여 하드링크 파일 생성
    → 원본 파일 'file1'과 하드 링크 파일 'file11'의 하드링크 수가 2인지 확인→ 'file1'과 'file11'은 파일 명만 다르고 메타정보 모두 동일함 → 'file1'과 'file11'의 한 쪽에만 작성하여도 모두 작성되는 건 확인→ 그렇다고 하나 삭제했다고해서 다른 복사한 원본 파일이 지워지지는 않음

2. 심볼릭 링크 파일

  • 심볼릭 링크 파일은 원본 파일에 링크하여 데이터를 사용
  • 심볼릭 링크 파일과 원본 파일의 inode 번호가 다름
  • 원본 파일을 삭제하면 심볼릭 링크 파일은 'ls'명령어로 확인은 가능, but 존재 X
  • 심볼릭 링크 파일은 'ln'명령어어세ㅓ '-s'옵션을 이용하여 원본 파일을 통해 생성
  • 원본 파일 'file2'에 대한 심볼릭 링크 파일 'fil22' 생성
    → 'echo' 명령어 활용하여 'file2'생성→ 'ln -s' 명령어 활용하여 심볼릭 링크 파일 생성→ 원본 파일 'file2'과 심볼릭 링크 파일 'file22'의 inode 번호 달라진 것 확인
    → 'file22'의 시작이 'l'인 것을 통해 심볼릭 링크 파일인 것을 알 수 있음
    → 두 파일의 내용은 동일 함 확인→ 'file2'와 'file22'의 한 쪽에만 작성하여도 모두 작성되는 건 확인
    → 원본 파일인 'file2'를 삭제해도 심볼릭 링크 파일인 'file22'는 삭제되지 않음
    → 하지만 'file22'의 내용을 확인하였을 때 확이할 수 없다고 뜸
  • 하드 링크와의 차이점
    → inode번호가 다르며, 서로 다른 파일임
    → 하드 링크 파일은 둘 다 원본의 형태
    → 심볼릭 링크 파일은 원본 파일 삭제 시, 연결된 파일이 의미가 없어짐 (형태는 존재)
    → 심볼릭 링크 파일은 파일과 디렉토리 모두 활용 가능
  • 바로가기 만드는 것으로 이해하면 됨!

<< 장치 파일 >>

  • 장치 파일은 블록 장치 파일과 캐릭터 장치 파일이 있음

1. 블록 장치 파일

  • 블록 단위로 | / O를 발생시킴
  • 'ls -l'명령어를 실행하면 맨 좌측 첫 번째 문자가 'b'로 시작하는 것
  • 블록단위로 | / O를 발생시킴

2. 캐릭터 장치 파일

  • 캐릭터 단위로 | / O를 발생시킴
  • 'ls -l'명령어를 실행하면 맨 좌측 첫 번째 문자가 'c'로 시작하는 것

0개의 댓글