리눅스 - 링크(Link)

코린이·2024년 11월 23일

Linux

목록 보기
14/27

📌 리눅스 - 링크(Link)

리눅스에서 링크(Link)는 파일 시스템에서 파일을 참조하는 방법으로 윈도우의 바로가기 기능과 비슷하다.

링크 방식은 심볼릭 링크(Symbolic/soft link)와 하드 링크(hard link) 방식으로 나뉜다.

✅ inode

리눅스에서 inode는 파일의 참조 정보를 담고 있는 메타데이터다.
파일의 실제 데이터는 디스크의 블록에 저장되며, inode는 그 데이터가 저장된 위치를 추적하는 역할을 한다.

즉, 저장 위치를 추적하는 정보이다.


심볼릭(소프트) 링크는 원본 파일의 경로를 저장하는 파일로, 원본 파일의 경로를 저장하고 있다.

원본 파일의 경로를 저장하는 파일이기 때문에 원본 파일이 삭제되거나 경로가 변경되면 심볼릭 링크가 깨지게 된다.

심볼릭 링크를 생성하면 새로운 inode가 생성된다.

  • 새로운 inode는 원본 파일에 대한 속성정보를 저장하고 있다.
# 심볼릭 링크 생성
# 심볼릭 링크를 생성할 때는 -s 옵션을 사용해야 한다.
ln -s <원본 파일> <심볼릭 링크 파일>

하드 링크는 원본 파일과 같은 inode 번호를 공유받아 생성되는 파일이다.

  • 원본 파일과 하드 링크는 실제 데이터를 공유(서로 같은 inode 참조)하는 방식이다.

하드 링크는 원본 파일과 같은 데이터를 참조하고 있기 때문에 원본 파일이 삭제돼도 하드 링크는 깨지지 않는다.

하드 링크는 같은 파일 시스템 내에서만 만들 수 있다.

# 하드 링크 생성
ln <원본 파일> <하드 링크 파일>

✅ 링크 & inode 확인

링크와 inode에 대한 정보를 확인하고 싶을 때는 dfstat 명령어를 사용하면 된다.

▶︎ inode 현황

df 명령어는 모든 파일 시스템의 디스크 사용량을 보여주는 명령어다. 여기서 -i 옵션을 추가하여 사용하면, 디스크 공간이 아닌 파일 시스템에서 사용 중인 inode의 상태를 확인할 수 있다.

# inode 확인
df -i

  • Filesystem : 각 파일 시스템의 이름
  • Inodes : 해당 파일 시스템에서 사용할 수 있는 전체 inode 수
  • IUsed : : 현재 사용 중인 inode 수
  • IFree : 생성 가능한 여유 inode 수
  • IUse% : 전체 inode중 사용 중인 inode의 비율
  • Mounted on : 해당 파일 시스템이 마운트된 위치(디렉토리)

▶︎ inode번호 / 하드 링크 연결 확인

stat 명령어는 파일 or 디렉토리에 대한 상세 정보를 출력하는 명령어다. 상세 정보 중에는 inode의 번호와 연결된 하드 링크의 개수를 확인할 수 있다.

# 파일의 inode 번호 / 하드링크 연결 수 확인
stat <파일명>

  • File : 파일명 또는 디렉토리 경로
  • Size : 파일의 크기
  • Blocks : 파일이 디스크에서 차지하는 블록 수
  • IO Block : 입출력 블록 크기
  • Type : 파일의 타입
    • 일반적인 파일의 경우 regular file
    • 디렉토리의 경우 directory
    • 심볼릭 링크의 경우 symlink...
  • Device : 파일이 저장된 디스크 장치의 정보
  • Inode : 파일의 inode 번호
  • Links : 해당 파일에 연결된 하드 링크 수
  • Access : 파일의 마지막 접근 시간
  • Modify : 파일의 마지막 수정 시간
  • Change : 파일의 마지막 상태 변경 시간
  • Birth : 파일 생성 시간

0개의 댓글