Linux

[ Linux ] ln 명령어 [ 하드 링크 vs 심볼릭 링크 ]

soyali 2025. 5. 27. 17:49

하나의 파일을 여러 경로에서 공유하거나, 특정 디렉터리에 있는 파일을 다른 위치에서 가상으로 참조하고 싶을 때 사용하는 명령어가 바로 **ln (link)**입니다.

ln을 이용하면 파일의 링크(참조)를 새로 만들 수 있으며, 특히 **심볼릭 링크(Symlink)**는 실무에서 자주 사용된다고 합니다.

 

 

ln 명령어 기본 형태

ln [옵션] <링크할 파일> <링크이름>

 

 

 

하드 링크 (Hard  Link)

 

기본 사용법

ln original.txt link.txt

특징

  • 실제 파일 내용을 가리키는 또 하나의 이름을 만듭니다.
  • 파일 내용은 하나지만, 이름이 여러 개
  • 어느 쪽 파일명을 삭제해도 내용은 남아 있음 (링크 수가 0이 될 때까지)

제한 사항

  • 다른 디렉터리나 파일 시스템 간에는 생성 불가
  • 디렉터리에는 하드 링크 생성 불가 (보안/복잡성 문제로 제한됨)

 

 

 

심볼릭 링크 (Symbolic Link, Soft Link)

 

기본 사용법

ln -s /경로/원본 대상링크

 

예시

ln -s file5 file0

명령어를 실행 후 ls -l로 조회하면 

파일 유형에 

첫글자가 l로 시작하는 것을 볼 수 있는데 이는 링크 파일임을 의미 합니다.

 

file0 -> file5는 file0 라는 파일이 file5를 가리키고 있다는 것을 보여줍니다.

 

만약에 심볼릭 링크를 걸어놓은 상태에서 원본인 "file5"를 rm 명령어로 삭제하게 된다면

바뀐 것을 확인 할 수 있습니다.

모양은 동일하지만, 실제로 link5를 열려고 하면 오류가 발생합니다.
이는 링크가 가리키고 있던 원본 파일 file5가 삭제되었기 때문으로, 이제 link5는 존재하지 않는 파일을 참조하는 **무효한 링크(dangling symlink)**가 된 상태입니다.

 

심볼릭 링크의 특징

가리키는 대상 원본 파일의 경로를 참조 (포인터처럼 동작)
파일 시스템 다른 디렉터리, 심지어 다른 디스크도 가능
삭제 시 영향 원본 파일이 삭제되면 링크는 깨짐 (dangling link)
식별 방법 ls -l 시 → myindex.html -> /var/www/html/index.html 형식으로 보임

 

  • l로 시작하는 항목은 링크 파일
  • -> 뒤에 실제 참조 대상 경로 표시

 

 

 

요약: 하드 링크 vs 심볼릭 링크 비교

명령어 예시 ln file link ln -s file link
대상 실제 파일의 내용(아이노드) 참조 파일의 경로(문자열) 참조
경로 제한 같은 파일 시스템 내에서만 가능 다른 디스크, 디렉터리도 가능
원본 삭제 시 다른 링크들이 유지됨 링크가 끊어짐(dangling)
디렉터리 링크 불가 가능 (ln -s /dir link)
사용 용도 파일 중복 없이 공유 자주 접근하는 경로 단축, 환경 설정 등