Linux

[Linux] 링크에 관해 (inode, 하드링크, 심볼릭링크)

studioesso 2025. 4. 25. 21:32

inode : 파일에 대한 정보를 가지고 있는 자료구조로, 파일은 무조건 연결된 inode가 존재한다.

 

ls -i

-i 옵션을 통해 파일에 대한 inode number (inode 식별자)를 확인할 수 있음.

 

 

하드 링크


 

같은 inode를 공유하는 완전히 동일한 파일을 생성.

ln [origin] [linkfile]

 

  • 하드 링크는 동일한 데이터를 참조하기 때문에 하나의 하드 링크 정보가 변경되면 하드 링크된 다른 모든 파일의 정보가 동일하게 변경됨.
  • 원본 파일이 삭제되도, 하드 링크가 된 파일이 존재하면 액세스가 가능함.
  • 하드링크는 동일 파일시스템이어야 하고, 디렉토리이면 안된다.

하드 링크는 파일의 정보가 완전히 동일하다. 원본인 test.log와 하드 링크된 hl.log의 타임 스탬프가 동일한 것을 확인할 수 있다.

 

하드 링크를 할 경우 link count가 올라간다. 기본이 1이고, 추가 생성할 때마다 +1

 

심볼릭 링크 (=소프트 링크)


ln -s [origin] [linkfile]

 

  • 다른 파일 시스템이라도 링크 가능
  • 디렉토리나 특수 파일도 링크 가능

심볼릭 링크는 -l 옵션으로 확인시 파일 권한 부분 맨 앞자리가 l로 표기되고, 파일 이름에는 화살표로 원본 파일이 표기된다.

 

원본 파일 삭제 시 심볼릭 링크 파일도 같이 유실된다. 하지만 하드 링크 파일은 여전히 접근 가능하다.

 

심볼릭 링크로 생성된 디렉토리의 원본 디렉토리로 이동하는 법

ln -s /var /home/var
cd -p /home/var ====> /var로 이동

 


 

하드링크와 심볼릭 링크의 inode 비교

원본 test.log와 하드링크 된 hl.log는 같은 inode,

원본 test.log와 심볼릭 링크 된 sl.log는 다른 inode 번호를 가지고 있다.