Computer >> 컴퓨터 >  >> 소프트웨어 >> 소프트웨어

Linux에서 심볼릭 링크(Symlink) 만드는 방법 – 초보자를 위한 단계별 실전 가이드

Linux에는 윈도우식 '바로가기' 기능이 없습니다. 하지만 그 역할을 대신해 주는 것이 바로 심볼릭 링크(Symbolic Link), 흔히 줄여서 '심링크(Symlink)'라고 부르는 기능입니다. 그렇다면 심볼릭 링크란 정확히 무엇이고, 어떻게 만들 수 있을까요? 지금부터 하나씩 살펴보겠습니다.

이 글의 명령어는 Ubuntu 환경에서 테스트했지만, 문법은 모든 리눅스 배포판에서 동일하게 작동합니다. 흥미롭게도 맥(Mac)에서도 심볼릭 링크를 만들 수 있습니다.

심볼릭 링크란 무엇인가?

하나의 파일을 여러 위치에서 접근하고 싶다면, 단순히 파일을 복사하는 것은 좋은 방법이 아닙니다. 디스크 공간을 낭비할 뿐만 아니라, 같은 파일이 여러 곳에 존재하기 때문에 변경 사항을 추적하기도 어려워집니다.

GUI 기반 운영체제에서는 '바로가기(숏컷)'를 만들어 이 문제를 해결합니다. CUI(명령줄 인터페이스) 기반 운영체제인 리눅스 배포판에서 그 해답이 되는 것이 심볼릭 링크입니다. 놀랍게도 마이크로소프트 윈도우도 일부 상황에서는 심볼릭 링크를 활용할 수 있습니다.

심볼릭 링크는 다른 파일이나 디렉터리를 가리키는 하나의 파일일 뿐입니다. 대상이 완전히 다른 파일 시스템이나 파티션에 있어도 상관없습니다. 심볼릭 링크를 열면 원본 파일에 접근할 수 있으며, 변경 사항은 원본 파일에도 그대로 반영됩니다.

파일 권한도 마찬가지입니다. chmod 명령으로 심볼릭 링크의 권한을 변경하면 실제로는 대상 파일의 권한이 수정됩니다.

심볼릭 링크의 종류: 하드 링크와 소프트 링크

심볼릭 링크는 '소프트 링크(soft link)'라고도 불립니다. 이름에서 짐작할 수 있듯이, 리눅스에서 파일을 연결하는 방식은 이것만 있는 것은 아닙니다. 특정 상황에서는 하드 링크(hard link)가 심볼릭 링크의 대안이 될 수 있지만, 몇 가지 제약이 따릅니다.

Linux에서 심볼릭 링크(Symlink) 만드는 방법 – 초보자를 위한 단계별 실전 가이드

먼저, 하드 링크는 단순히 같은 inode를 가리키는 또 다른 파일 이름입니다. 덕분에 저장 공간과 접근 속도 면에서 매우 효율적이지만, 같은 파일 시스템·파티션 안의 파일에만 사용할 수 있다는 한계가 있습니다. 또한 리눅스가 폴더에 접근하는 방식의 특성상, 하드 링크는 디렉터리에는 사용할 수 없습니다.

반면 소프트 링크, 즉 심볼릭 링크는 데스크톱의 바로가기와 더 비슷합니다. 각 소프트 링크는 원본 데이터를 가리키는 작은 파일일 뿐, 원본과 직접 연결되어 있지 않습니다. 그래서 다른 파티션이나 파일 시스템에 있는 파일과 디렉터리도 제약 없이 자유롭게 가리킬 수 있습니다.

하드 링크 vs 소프트 링크, 무엇을 써야 할까?

소프트 링크는 가장 유연한 링크 형태입니다. 여러 파일 시스템에 걸쳐 파일과 디렉터리 모두 제약 없이 사용할 수 있기 때문입니다. 그렇다면 하드 링크는 왜 존재하는 걸까요? 심볼릭 링크보다 나은 장점이라도 있을까요?

이론적으로는 하드 링크가 더 효율적입니다. 동일한 inode를 공유하기 때문에 추가 디스크 공간을 차지하지 않고, 소프트 링크보다 훨씬 빠르게 접근할 수 있습니다. 이 때문에 많은 시스템 관리자들이 가능하면 하드 링크를 사용할 것을 권장합니다.

다만, 심볼릭 링크의 단점은 사실 미미합니다. 특히 요즘 컴퓨터에서는 몇 KB의 추가 저장 공간 정도는 큰 부담이 아니며, 수백만 개의 소프트 링크로 시스템을 채우지 않는 한 파일 크기 차이는 거의 문제가 되지 않습니다.

심볼릭 링크 생성 방법

심볼릭 링크(정확히는 일반적인 파일 링크)는 ln 명령어로 생성합니다. 기본적으로 ln 명령은 하드 링크를 만들며, 심볼릭 링크를 만들려면 -s 옵션을 붙여야 합니다.

문법은 아주 간단합니다. ln 명령은 두 개의 인수를 받는데, 첫 번째는 연결할 대상 파일(또는 폴더)의 경로이고, 두 번째는 새로 만들 링크 파일의 경로입니다.

예를 들어 다음과 같습니다.

ln -s user_names.txt names

이 명령을 실행하면 user_names.txt 파일에 연결된 names라는 심볼릭 링크가 생성됩니다. 심볼릭 링크가 실제로 만들어졌는지 확인하려면 ls 명령어를 사용하면 됩니다.

Ubuntu는 파일 종류별로 다른 색상을 표시합니다. 디렉터리는 진한 파란색, 심볼릭 링크는 더 밝은 파란색(청록색, cyan)으로 구분되어 나타납니다.

같은 문법으로 폴더의 심볼릭 링크도 만들 수 있습니다.

ln -s examples example_folder

Linux에서 심볼릭 링크(Symlink) 만드는 방법 – 초보자를 위한 단계별 실전 가이드

다른 디렉터리에 있는 파일이나 폴더의 심볼릭 링크를 만들 때는 전체 경로를 지정하면 됩니다. 예를 들어 다음과 같습니다.

ln -s examples/example3.txt distant_example

Linux에서 심볼릭 링크(Symlink) 만드는 방법 – 초보자를 위한 단계별 실전 가이드

심볼릭 링크의 한계와 주의사항

심볼릭 링크는 복사본을 만들지 않고도 시스템 곳곳의 파일을 연결할 수 있는 훌륭한 도구지만, 나름의 한계도 존재합니다. 소프트 링크가 하드 링크보다 제약이 적다고는 해도, 몇 가지 유의할 점이 있습니다.

첫째, ln 명령어는 생성된 링크의 유효성을 검증하지 않습니다. 즉, 실제로 존재하지 않는 파일 이름을 입력해도 오류가 발생하지 않습니다. 링크가 올바른지 확인하는 유일한 방법은 직접 링크에 접근해 보고 원하는 파일로 연결되는지 확인하는 것입니다.

둘째, 심볼릭 링크에 접근하거나 권한을 변경하면 원본 파일의 속성이 함께 변경되지만, 삭제에는 적용되지 않습니다. 심볼릭 링크는 연결된 원본 파일이나 디렉터리에 영향을 주지 않고 안전하게 삭제할 수 있습니다.

마무리: 홈 디렉터리에서 심볼릭 링크 활용하기

터미널로 심볼릭 링크를 만들 때 가장 번거로운 점은 여러 디렉터리에 흩어져 있는 중요한 파일들에 접근하기 어렵다는 것입니다. 스마트한 해결책은 데스크톱 바로가기처럼 홈 디렉터리에서 해당 파일들로 향하는 심볼릭 링크를 만들어 두는 것입니다.

또한 하드 링크와 달리, 심볼릭 링크는 다른 파티션과 파일 시스템의 디렉터리나 파일까지도 제약 없이 손쉽게 연결할 수 있습니다. 다만 이는 심볼릭 링크가 존재하지 않는 파일을 가리킬 수도 있다는 의미이기도 합니다. 링크에 직접 접근해 파일이 실제로 존재하는지 확인하는 습관을 들이는 것이 좋습니다.