[Linux] 파일 링크(Soft Link, Hard Link) 차이점 정리 (ln -s)

리눅스에서는 하나의 파일을 다양한 방식으로 다른 위치에서 참조할 수 있습니다.
그 대표적인 방법이 바로 하드 링크(hard link)소프트 링크(soft link)입니다.

이 두 개념은 겉보기엔 비슷하지만, 실제로는 동작 방식과 목적이 꽤 다릅니다.


소프트 링크(Soft Link, 심볼릭 링크)

소프트 링크는 윈도우의 "바로가기"와 비슷한 개념입니다.
원본 파일의 경로를 참조하는 별도 파일이 생성됩니다.

만드는 방법

ln -s 원본파일 링크이름

예시:

ln -s /home/user/data.txt link_to_data.txt

특징

  • 링크는 원본 파일의 위치 정보를 저장함
  • 원본이 삭제되면 링크는 끊어짐 (broken link)
  • 디렉토리에도 링크 가능

 

하드 링크(Hard Link)

하드 링크는 동일한 파일의 또 다른 이름(alias)을 만들어주는 방식입니다.
두 개의 파일이지만, 실제로는 같은 inode(파일 식별자)를 공유합니다.

만드는 방법

ln 원본파일 링크이름

예시:

ln /home/user/data.txt hardlink_to_data.txt

특징

  • 링크와 원본은 완전히 동등한 파일
  • 원본을 삭제해도 하드 링크는 살아있음 (내용 유지됨)
  • 디렉토리에 대해서는 하드 링크 불가 (보안상 제한)
  • 같은 파일 시스템 내에서만 가능

 

소프트 링크 vs 하드 링크 비교

항목 소프트 링크 하드 링크
기본 개념 원본 파일 경로를 참조 원본 파일과 동일한 inode 사용
원본 삭제 시 링크가 깨짐 링크는 그대로 동작
디렉토리 링크 가능 불가능
파일 시스템 다른 파일 시스템도 가능 같은 파일 시스템에서만 가능

 

확인 방법 – ls 명령어 활용

ls -li

inode 번호를 함께 표시해주기 때문에 하드 링크는 동일한 inode를 공유하는 것을 확인할 수 있어요.

예시:


$ ls -li
123456 -rw-r--r-- 2 user user  1000  example.txt
123456 -rw-r--r-- 2 user user  1000  hardlink_to_example.txt

inode 번호가 같으면 하드 링크, 다르면 소프트 링크입니다.

 

어떤 링크를 써야 할까?

소프트 링크는 원본 파일의 경로를 따르는 "가벼운 연결"로서, 주로 디렉토리 링크나 외부 위치 연결에 유용하고,
하드 링크는 동일한 파일 시스템 안에서 파일을 중복 저장 없이 공유할 때 사용됩니다.