리눅스 ln -s 심볼릭 링크 만드는 방법과 이유

리눅스에서 심볼릭 링크는 윈도로 치면 '바로가기' 아이콘과 비슷합니다. 바로가기는 사용자가 자주 보이는 곳에 만들어두고 프로그램을 실행할 때 유용하게 사용됩니다. 심볼릭 링크 역시 마찬가지입니다. 단, 리눅스의 경우 라이브러리 파일을 잘 찾지 못할 때 심볼릭 링크가 활용되기도 합니다.

리눅스 링크

리눅스 시스템에는 두 가지 유형의 링크가 존재합니다. 하드 링크와 소프트 링크(심볼릭 링크)입니다.

하드 링크

하드 링크는 사실상 파일의 복사본을 만드는 것과 흡사합니다. 때문에 원본 파일이 삭제되거나 위치가 바뀌어도 사용할 수 있습니다. ln 명령어는 기본적으로 하드 링크를 생성합니다.

[root@localhost TEST]# ln test.txt hardlink_test.txt
[root@localhost TEST]# ls -lhS
total 8.0K
-rw-r--r--. 2 root root 28 Dec 19 05:31 hardlink_test.txt
-rw-r--r--. 2 root root 28 Dec 19 05:31 test.txt

보시는 바와 같이 test.txt와 동일한 크기(28)의 파일이 하나 더 생긴 걸 볼 수 있습니다.

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

심볼릭 링크는 윈도우로치면 바로가기를 만드는 것과 비슷합니다. 심볼릭 링크는 원본 파일이나 디렉토리가 위치한 경로를 가리킵니다. 단순히 경로를 가리키는 역할이기 때문에 원본 파일이 이동되거나 삭제되면 심볼릭 링크 역시 작동하지 않습니다.

심볼릭 링크 생성

심볼릭 링크 생성 구문

ln -s [원본 파일 또는 디렉토리] [심볼릭 링크 이름]

위에서 언급했듯 ln 명령어는 기본적으로 하드 링크를 생성합니다. 심볼릭 링크를 생성하기 위해선 s 옵션을 사용합니다.

 

[예시]

[root@localhost TEST]# ls
test.txt
[root@localhost TEST]# ln -s test.txt link_test.txt
[root@localhost TEST]# ls -lhS
total 4.0K
-rw-r--r--. 1 root root 28 Dec 19 05:31 test.txt
lrwxrwxrwx. 1 root root  8 Dec 19 05:31 link_test.txt -> test.txt

text.txt를 가리키는 심볼릭 링크 link_test.txt가 생성됐습니다. 조회 시 link_test.txt -> test.txt처럼 직관적으로 심볼릭 링크 파일임이 표시됩니다.

[root@localhost TEST]# cat test.txt
테스트 문서입니다.
[root@localhost TEST]# cat link_test.txt
테스트 문서입니다.

생성된 심볼릭 링크와 원본 문서 모두 동일한 내용을 출력합니다.

심볼릭 링크 사용 이유

심볼릭 링크를 사용하는 이유는 자주 보는 경로에서 원하는 실행을 구현하기 위해서도 있지만, 공유 라이브러리를 찾는 과정에서 필요한 모듈이 있음에도 정상적으로 찾지 못하는 문제가 발생할 때 심볼릭 링크를 활용할 수 있습니다.

 

[예시]

레드헷 8버전 이상을 사용하다 보면 애플리케이션 사용 시 아래와 같이 libssl.so.1.1을 찾지 못한다는 에러가 발생할 수 있습니다.

openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

그런데 실제로 컴퓨터에는 libssl.so.2 파일이 존재하는 상황이라면, 심볼릭 링크로 문제 해결이 가능합니다.

ln -s /lib/libssl.so.2 libssl.so.1.1

심볼릭 링크 해제 방법

심볼릭 링크 해제 및 삭제는 일반 파일 삭제와 마찬가지로 rm을 이용하거나, unlink 명령어를 사용하면 됩니다.

rm 링크 파일명

또는

unlink 링크 파일명

[예시]

[root@localhost TEST]# ll
total 8
-rw-r--r--. 2 root root 28 Dec 19 05:31 hardlink_test.txt
lrwxrwxrwx. 1 root root  8 Dec 19 05:31 link_test.txt -> test.txt
-rw-r--r--. 2 root root 28 Dec 19 05:31 test.txt
[root@localhost TEST]# rm link_test.txt
rm: remove symbolic link ‘link_test.txt’? y
[root@localhost TEST]# ll
total 8
-rw-r--r--. 2 root root 28 Dec 19 05:31 hardlink_test.txt
-rw-r--r--. 2 root root 28 Dec 19 05:31 test.txt
[root@localhost TEST]#

심볼릭 링크 삭제 시 주의사항

파일질라 심볼릭링크 삭제
파일질라에서 심볼릭 링크를 삭제 시도하는 모습

 

심볼릭 링크 삭제 시도 시 경로창
심볼릭 링크가 가리키는 경로가 디렉토리인 경우 원본 파일을 삭제할 수 있다고 경고하고 있다.

 

심볼릭 링크는 FTP 툴로 삭제하지 않습니다. 반드시 리눅스로 직접 삭제합니다. FTP에서 삭제할 경우 파일질라가 경고하는 것처럼 링크가 연결되어 있는 디렉토리의 정보가 함께 삭제될 수 있는 가능성이 있기 때문입니다.

반응형

댓글

Designed by JB FACTORY