728x90

개요

개발을 하다 보면 같은 파일을 여러 경로에서 접근해야 하는 경우가 있습니다.

 

예를 들어, 설정 파일여러 프로젝트에서 공유하거나, 특정 실행 파일다양한 위치에서 실행하고 싶을 경우가 있습니다. 이때 사용하는 개념이 링크(Link) 입니다.

 

본 글에서는 리눅스의 심볼릭 링크(Symbolic Link)하드 링크(Hard Link)에 대해서 정리하고자 합니다.

 

심볼릭 링크(Symbolic Link)란❓

심볼릭 링크(Symbolic Link, 소프트 링크)일종의 바로가기 개념으로, 원본 파일의 경로를 참조하는 링크 파일입니다.

주요 특징

 

  • 원본 파일경로를 저장하는 새로운 파일을 생성합니다.
  • 원본 파일 삭제되면 링크는 깨집니다.
  • 다른 파일시스템에 있는 파일도 링크할 수 있습니다.
  • 디렉토리도 링크할 수 있습니다.

 

생성 방법

ln -s 원본파일 링크이름

 

예를 들어, /home/user/config.yaml 파일을 /etc/config.yaml 경로에서도 접근하고 싶다면 다음과 같이 작성할 수 있습니다.

ln -s /home/user/config.yaml /etc/config.yaml

 

위와 같이 명령어를 실행하면, /etc/config.yaml를 통해 /home/user/config.yaml의 내용을 그대로 볼 수 있습니다.

 

하드 링크(Hard Link)란❓

하드링크는 원본 파일동일한 inode를 가리키는 또 다른 파일명입니다. 즉, 동일한 데이터를 가리키는 여러 개의 파일명존재하는 것입니다.

inode 란❓

Unix/Linux 파일 시스템에서 파일이나 디렉토리모든 메타데이터를 저장하는 데이터 구조입니다. 쉽게 말해서, 파일의 "신분증" 같은 것입니다.

주요 특징

 

  • 원본 파일과 완전히 동일한 파일입니다
  • 원본 파일삭제되어도 링크된 파일은 계속 사용 가능합니다
  • 같은 파일시스템 내에서만 생성 가능합니다
  • 디렉토리는 링크할 수 없습니다

생성 방법

ln 원본파일 링크이름

 

 

예를 들어, file1.txt하드 링크 file2.txt로 만들고 싶다면 다음과 같이 작성할 수 있습니다.

ln file1.txt file2.txt

 

위와 같이 명령어를 실행하면 file1.txtfile2.txt동일한 파일을 가리키며, 둘 중 하나를 수정하면 다른 파일도 동일하게 변경됩니다.

 

심볼릭 링크와 하드 링크의 차이점 한눈에 보기

구분 심볼릭 링크 (Symbolic Link) 하드 링크 (Hard Link)
개념 원본 파일의 경로를 참조하는 파일 원본과 같은 Inode를 가지는 파일
파일 존재 여부 원본 파일이 삭제되면 링크가 깨짐 원본 파일이 삭제되어도 유지됨 
디렉토리 링크 가능 여부 가능 ✅ 불가능 ❌ 
다른 파일 시스템에서 가능 여부 가능 ✅ ❌ (같은 파일 시스템 내에서만 가능)
Inode 번호 원본과 다름 원본과 같은

 

결론

 

  • 심볼릭 링크
    • 설정 파일을 공유하거나, 특정 실행 파일 여러 위치에서 실행해야 할 때 사용
  • 하드 링크
    • 백업 파일을 만들거나, 하나의 파일 여러 경로에서 동일하게 유지하고 싶을 때 사용