임시방편으로 심볼릭 링크 사용하기

염겨레·2023년 12월 4일
0

회사 업무를 하면서 심볼릭 링크를 처음 사용하게 되어 이를 정리하려고 합니다. 임시로 리눅스 서버 상에서 어드민 페이지를 구동시켜 페이지의 동작을 확인해야 했습니다. 하지만 인스톨러 파일을 다운로드 하는 기능이 동작하지 않았습니다.

확인을 해보니 임시로 올린 도커 컨테이너의 바인딩 및 포트 설정이 잘못된 것을 알게 되었습니다. 서버에 존재하는 인스톨러 파일을 어드민 페이지에서 잘못된 경로로 접근하고 있었습니다. 컨테이너를 다시 올리는 것은 시간이 많이 소요될 것 같아 사수분께 임시 방편이 있을지 여쭈어 보았습니다. 사수분은 말했습니다.

"심볼릭 링크를 사용해 보게😎"

1. 심볼릭 링크란?

위키백과에서 심볼릭 링크는 다음과 같이 정의합니다.

"심볼릭 링크(symbolic link)는 절대 경로 또는 상대 경로의 형태로 된 다른 파일이나 디렉터리에 대한 참조를 포함하고 있는 특별한 종류의 파일이다"

실제로 심볼릭 링크를 생성하면 윈도우의 바로가기와 비슷한 파일 또는 디렉토리가 생성되는 것을 볼 수 있습니다.

2. 심볼릭 링크 생성

심볼릭 링크는 다음과 같은 명령어로 생성할 수 있습니다.

$ ln -s <연결하고자 하는 파일 또는 디렉토리의 경로> <링크를 생성하려는 경로>

저는 아래와 같이 링크를 생성해 /root/test 경로 접속하면 /data 경로로 접근할 수 있도록 설정하였습니다.
링크 생성

여기서 s 옵션은 심볼릭(소프트) 링크를 의미합니다. 해당 옵션이 없으면 하드 링크를 생성합니다. 하드 링크와 심볼릭 링크의 차이점은 하드 링크의 경우 파일에 직접적으로 i-node에 대한 링크를 생성하는 반면, 심볼릭 링크는 추가적인 i-node를 생성해 포인터를 사용해 간적접으로 링크를 생성한다는 점입니다.

i-node는 파일의 메타데이터 및 데이터 블록에 대한 참조 등을 저장하는 파일 시스템 구조이다.

하드 링크는 파일 시스템이 무한 루프에 빠지는 것을 방지하기 위해 디렉토리에 대해 링크를 생성할 수 없으므로 저는 심볼릭 링크를 사용하게 되었습니다.

3. 심볼릭 링크 확인

심볼릭 링크 생성 여부는 ls 명령어에 -l 옵션을 주어 확인할 수 있습니다. 위에서 생성한 링크가 있는 /root/test 경로에서 아래 명령어를 입력하면

$ ls -l

현재의 /data 경로를 화살표로 가리키는 심볼릭 링크가 생성돼 있음을 확인할 수 있습니다.
링크 확인

WinSCP에서 확인하면 data 디렉토리가 바로가기 아이콘으로 표시된 것을 볼 수 있습니다.

링크 확인 - winSCP

4. 심볼릭 링크 삭제

심볼릭 링크 삭제는 단순히 rm 명령어를 이용하면 됩니다. 심볼릭 링크가 존재하는 경로에서 다음과 같은 명령어를 수행하면 됩니다.

링크 삭제

단순히 바로가기를 삭제한 것과 마찬가지이므로 원본에 영향을 주지는 않습니다.

마무리

임시방편으로 심볼릭 링크를 사용한 것이었지만 심볼릭 링크에 대해 알아 보면서 i-node를 처음 알게 되었고, 조금이나마 파일 시스템 구조에 대해서도 이해하게 되었습니다. 중요한 것은 어떤 것을 잘 알고 쓰느냐 아니냐인 것 같습니다. 프론트를 주로 다루는 웹 개발자이지만 도커이든 리눅스이든 좀 더 깊숙하게 알아보고 싶어집니다.

참고자료

  1. https://www.freecodecamp.org/korean/news/rinugseu-symlink-tyutorieol-simbolrig-ringkeu-symbolic-link-reul-saengseonghago-sagjehaneun-bangbeob/
  2. https://askubuntu.com/questions/210741/why-are-hard-links-not-allowed-for-directories
  3. https://80000coding.oopy.io/81f0b873-a067-4400-8317-5c15cef70664
profile
차근차근 나아가는 시나브로 개발자

0개의 댓글