[Linux] Symlink, Hard Link

dan·2026년 3월 9일

Red Hat Linux

목록 보기
6/9

리눅스 시스템에서 특정 파일로의 접근을 가능하게 하는 Symlink(=Soft Link)와 Hard Link에 대해 알아보자.

1. 링크 생성

  • Soft Link
ln -s [원본파일 경로 ] : 소프트링크 - 원본 삭제하면 내용도 삭제되어 출력 불가
ln -s [원본파일 경로] [민들 링크 이름/경로]
  • Hard Link
ln [원본파일 경로] : 하드링크 - 원본 삭제 해도 링크 내에 내용 남아서 출력 가능
ln [원본파일 경로] [민들 링크 이름/경로]

touch softlink
touch hardlink

로 빈 파일을 생성한 뒤 각각 Soft Link와 Hard Link를 걸어보자.

생성된 링크는 다음과 같다.


2. inode(index node)

생성된 두 링크의 inode를 원본 파일과 비교해보자.

ls -li | grep link


Hard Link는 원본 파일과 동일한 inode를 가지지만, Soft Link는 원본 파일과 다른 inode를 가진다. 즉, Hard Link는 데이터 블록이 같은 inode를 가리키지만 Soft Link는 inode가 아닌 원본 파일을 가리킨다.

2.1 inode(index node)

inode는 파일시스템에서 파일과 디렉토리의 메타데이터를 저장하는 약 128~256바이트의 고정 크기 자료구조이다. 파일의 소유자, 권한, 크기, 시간, 데이터 블록 위치 등을 저장하고 관리한다.

stat [file_path]  # inode 상세 정보 확인

파일의 데이터는 디스크의 데이터 블록에 저장되지만, 파일의 위치나 권한 등 데이터를 제외한 모든 정보는 inode에 담긴다.

사용자가 보통 파일 이름으로 파일들을 구분한다면, 운영체제는 inode를 통해 파일의 실체를 파악한다. 특정 파일(a.txt)을 오픈하는 상황을 가정하면, 시스템 내부에서는

inode 찾기 → inode 접근 → 데이터 접근

1) 디렉토리 엔트리에서 a.txt와 일치하는 inode 번호를 찾고, 2) 해당 inode를 읽어 사용자의 r 권한 여부를 확인하고, 3) r 권한 존재 시, inode의 데이터블록 포인터를 따라 실제 디스크 블록에 저장된 데이터를 불러온다.

Hard Link는 원본 파일이 가리키는 inode를 가리키고, Soft Link는 원본 파일 자체를 가리킨다.

  • Hard Link

  • Soft Link

Hard Link는 특정 데이터를 읽기 위한 inode로의 진입 경로를 추가로 생성하는 개념이고, Soft Link는 원본 파일 경로를 데이터로 하는 새로운 inode를 할당하는 방식이다.

2.3 원본 파일 삭제 시

Hard Link는 원본 파일 삭제 시에도 데이터 값을 출력하지만, Soft Link는 원본 파일 삭제 시 데이터를 출력할 수 없다. 그 이유는, 원본 파일 inode로의 참조 가능 여부에 있다.

원본 파일 inode를 참조할 수 있다면 원본 파일의 데이터가 기록된 디스크의 데이터 블록에 접근하여 데이터를 읽어올 수 있지만, inode 참조가 불가능하다면 원본 데이터의 데이터 블록 위치를 찾을 수 없기 때문에 데이터 읽기 및 출력이 불가능하다.


참고 링크

symlink - Wikipedia
hard link - Wikipedia
inode - Wikipedia

profile
Hello Engineering World

0개의 댓글