리눅스 심볼릭링크 하드링크 차이점

리눅스에는 윈도우의 바로가기와 흡사한 기능을 하는 링크를 만드는 방법은 두가지가 있습니다.

심볼릭 링크와 하드 링크

inode 라는 개념이 나오는데 inode는 데이터의 고유 식별 번호입니다.

 

하드 링크

  • 원본과 동일한 inode
  • 원본이 삭제되더라도 링크는 여전히 사용 가능

 

심볼릭 링크

  • 원본과 다른 inode
  • 원본 파일을 가리키는 링크입니다.
  • 원본 파일이 삭제되면 사용이 불가합니다.
  • 주로 Dynamic Library의 so 파일과 연결해서 사용합니다.

 

사용방법

ln [원본파일] [링크파일]

-s 옵션 여부에 따라 하드링크 심볼릭링크가 나눠집니다. -s를 넣어 주시면 심볼릭 링크로 동작합니다.

 

예시

아이노드 확인하기

test

inode : 80220368362932813

 

ls에 -i 옵션을 주면 파일의 i-node를 확인할 수 있습니다.

 

심볼릭링크 걸기

test

inode : 80220368362932813

 

test_hard

inode : 80220368362932813

 

test_sym

inode : 7599824371711414

 

심볼릭 링크만 inode가 다른 것을 확인할 수 있습니다.

 

링크 확인

심볼릭의 경우 앞에 l로 링크 파일이라는 것이 확인 되고 포인터로 원본 파일을 가리키고 있습니다.

하드 링크의 경우는 차이가 없습니다. 사실상 cp 명령어와 비슷한 효과를 내기 때문에 잘 사용되지 않습니다.

 

 

원본파일 수정 시

파일 내용확인

원본 파일 수정 시 하드링크와 심볼릭 링크 둘 다 원본에 따라 변경되는 것을 볼 수 있습니다.

 

원본 파일 삭제 시

링크 끊김

심볼릭 링크의 포인터가 끊어진 것을 볼 수 있습니다.

 

such file

하드 링크는 그대로 사용이 가능하지만 심볼릭 링크는 사용이 불가합니다.

 

심볼릭링크 하드링크 비교표

구분 심볼릭 링크 하드 링크
생성 명령어 ln –s [원본 파일명] [링크 파일명] ln [원본 파일명] [링크 파일명]
생성 종류 파일과 디렉토리 모두 생성 파일만 생성
링크 기능 파일 또는 디렉토리 이름에 대한 링크를 가리킴 원본 파일에 대한 참조 또는 포인터
원본 파일 삭제할 경우 액세스 불가능 액세스 가능
inode 번호 다른 inode 번호 동일한 inode 번호
다른 파티션 링크 여부 다른 파티션에 링크 가능 다른 파티션에 링크 불가능
특징 - 데이터 접근 시, 원본 i-node를 경유한다.
- 디렉터리도 가능하다.
- i-node로 바로 데이터에 접근한다.
- 디렉터리는 지원하지 않음

댓글

Designed by JB FACTORY