Infra/Linux

[리눅스] 하드링크와 심볼릭링크에 대해 알아보자

sdoaolo 2025. 5. 7. 00:13
728x90

 

✅ 링크란 ? 

 

 

리눅스의 파일시스템에선  파일에 별명을 붙이는 것이 가능하다.  이를 링크라고 한다. 

 

링크는 하드링크, 소프트링크 두 종류가 있다. 

 

 

✅ 하드링크

파일 원본에 이름을 여러개 붙이는 기능이다. 

 


하드링크로 만든 파일에 대해선 원본과 복사본에 대한 구분이 필요 없다. 

양쪽 다 원본 파일이기 때문이다. 

 

예시) 

test파일을 만들고 안에 My name is test라고 적어두었다. 

 

이후 하드링크를 만든다. 

ln 원본파일 하드링크이름 

ln test hardlinktest

 

 

test와 hardlinktest를 모두 출력해보았을때 똑같은 결과가 나오는것을 볼 수 있다. 

 

 

⏺ 하드링크 삭제

이름이 여러개가 된 파일중,   하나를 삭제한다고 해도 나머지 하드링크로 연결된 파일들은 남게된다.

결국 모든 하드링크가 삭제되어야 파일이 최종 삭제된다.

 

 

⏺ 하드링크의 한계

  • 디렉터리는 하드링크 할 수 없다. 
  • 서로 다른 디스크에 걸쳐서 만들 수 없다. 

 

 

✅ 심볼릭링크

 

심볼릭 링크는  원본 파일에 대한 정보가 담긴 특수 파일이다. 

*원본과 구분되는 링크이다.

 

따라서 하드링크의 한계였던 디렉터리에대한 링크가 가능하고, 서로 다른 디스크에 걸쳐서 만들 수 있기 때문에 

하드링크보다 더더더 자주 사용된다. 

 

 

 

예시)   파일 링크 

심볼릭 링크를 만들려면 ln -s 명령어를 사용한다.

연결할파일과  별칭을 나열하여 만든다. 

 

 

ln -s 연결할파일 별칭

 

ln -s test s_link_test

 

 

cat 으로 출력해보면 test파일이 잘 출력되는 것을 확인할 수 있다. 

 

 

⏺ 심볼릭링크 삭제

심볼릭링크를 삭제하면 원본에는 아무런 영향이 없다

단 원본파일을 삭제하면  심볼릭링크가 깨진다 .

 

 

원본 파일인 test를 지우니 s_link_test가 빨간색으로 변했다.

출력 시도 하면 No such file or directory가 뜨는것을 확인할 수 있다 .

 

 

 

 

예시)   디렉터리 링크

ln -s 경로 별칭

연결할곳과   별칭을 나열하여 만든다. 

 

 

ln -s ../link_dir  ld

 

 

명령어를 입력하면 ld라는 디렉터리가 생겨난것을 확인할 수 있다. 

 

 

ll명령어로 확인해보면 ld는   ../link_dir과 연결되어있다. 

 

ld 로 이동하여 test파일을 만든다. 

 

 

 

link_dir경로로 이동하면 그대로 test가 만들어져있는것을 확인할 수 있다. 

 

 

 

 

 

 

 

 심볼링 링크의 활용

  • 심볼링 링크는 너무 긴 경로명에 빠르게 접근하고 싶을때 사용한다. 
  • 로그 파일만 따로 모으는 경로가 있다.
    애플리케이션의 로그를 저장할때 관련 디렉터리에 심볼릭 링크를 만들어 놓고 ,
    로그가 모인 경로로 보내지도록 할수도 있다.