리눅스 심볼릭 링크 사용법 (ln -s 만들기, 지우기, 활용)
Nginx 설정에서 sites-enabled 폴더를 보면 파일 옆에 화살표(->)가 붙어 있다. 원본 파일을 가리키는 바로가기, 즉 심볼릭 링크다. 이 글에서는 ln -s로 심볼릭 링크 만드는 법, 확인하고 지우는 법, 하드 링크와의 차이, 실무 활용 예를 정리한다. 기본 파일 명령은 리눅스 기본 명령어에 먼저 정리해 두었다.

심볼릭 링크 만들기: ln -s
# ln -s 원본 링크이름
ln -s /var/www/releases/v2 /var/www/current
# 확인: -> 뒤에 가리키는 원본이 보인다
ls -l /var/www/current
# lrwxrwxrwx 1 root root 21 Oct 25 09:00 /var/www/current -> /var/www/releases/v2
# 최종 원본 경로
readlink -f /var/www/current
순서가 “원본 먼저, 링크 나중”이라는 점이 가장 많이 헷갈린다. cp처럼 “어디서 → 어디로”라고 기억하면 된다.
심볼릭 링크 바꾸기와 지우기
# 이미 있는 링크를 다른 원본으로 바꾸기 (-f 덮어쓰기, -n 링크 자체를 대상으로)
ln -sfn /var/www/releases/v3 /var/www/current
# 링크 지우기: 원본은 그대로 남는다
rm /var/www/current
# 또는
unlink /var/www/current
디렉터리 링크를 지울 때 주의
디렉터리를 가리키는 링크를 지울 때 rm current/처럼 끝에 /를 붙이면 링크가 아니라 원본 디렉터리를 대상으로 해석될 수 있다. 특히 rm -rf current/는 원본 내용을 지울 수 있으니 절대 쓰지 말고, 끝의 / 없이 rm current 또는 unlink current로 지운다.
하드 링크와 차이
| 구분 | 심볼릭 링크 (ln -s) | 하드 링크 (ln) |
|---|---|---|
| 가리키는 대상 | 원본의 경로 | 원본과 같은 데이터(inode) |
| 원본을 지우면 | 깨진 링크가 됨 | 데이터는 남아 있음 |
| 디렉터리 | 가능 | 불가 |
| 다른 디스크(파일 시스템) | 가능 | 불가 |
일상적인 서버 작업에서는 거의 항상 심볼릭 링크를 쓴다. 디스크와 파일 시스템 개념은 디스크 확인 및 마운트에서 다뤘다.
심볼릭 링크 실무 활용
Nginx 사이트 켜고 끄기
# Ubuntu: 설정은 sites-available 에, 켤 때 링크를 sites-enabled 에
sudo ln -s /etc/nginx/sites-available/blog.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
# 끌 때는 링크만 지운다
sudo rm /etc/nginx/sites-enabled/blog.conf
무중단에 가까운 배포
새 버전을 releases/v3에 미리 올려 두고, current 링크만 v3로 바꾼 뒤 서비스를 다시 읽게 하면 교체가 순식간에 끝난다. 문제가 생기면 링크를 v2로 되돌리면 된다. 서비스 설정은 systemd 서비스 만들기를 참고하자.
큰 데이터 디렉터리를 다른 디스크로
/var/www/uploads가 커져서 추가 디스크(/data)로 옮길 때, 옮긴 뒤 원래 자리에 링크를 만들면 애플리케이션 설정을 바꾸지 않아도 된다. 디스크가 부족할 때의 대처는 리눅스 디스크 용량 부족 해결에 있다.
깨진 링크 찾기
# 원본이 사라진 링크 찾기
find /etc /var/www -xtype l 2>/dev/null
명령 옵션은 GNU coreutils ln 매뉴얼에 있다. 웹 서버나 PHP가 링크를 따라가려면 원본 경로에도 접근 권한이 있어야 한다는 점도 기억하자(파일 권한).
심볼릭 링크 정리
ln -s 원본 링크, 바꿀 때는 ln -sfn, 지울 때는 끝에 / 없이 rm. 이 세 가지만 기억하면 설정 관리와 배포가 훨씬 깔끔해진다. 워드프레스 성능 개선은 전날 글인 워드프레스 속도 개선에 있다.
첫 댓글을 남겨보세요