리눅스 심볼릭링크 하드링크 차이점
- IT/리눅스(Linux)
- 2022. 8. 6.
리눅스에는 윈도우의 바로가기와 흡사한 기능을 하는 링크를 만드는 방법은 두가지가 있습니다.
심볼릭 링크와 하드 링크
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 명령어와 비슷한 효과를 내기 때문에 잘 사용되지 않습니다.
원본파일 수정 시
원본 파일 수정 시 하드링크와 심볼릭 링크 둘 다 원본에 따라 변경되는 것을 볼 수 있습니다.
원본 파일 삭제 시
심볼릭 링크의 포인터가 끊어진 것을 볼 수 있습니다.
하드 링크는 그대로 사용이 가능하지만 심볼릭 링크는 사용이 불가합니다.
심볼릭링크 하드링크 비교표
구분 | 심볼릭 링크 | 하드 링크 |
생성 명령어 | ln –s [원본 파일명] [링크 파일명] | ln [원본 파일명] [링크 파일명] |
생성 종류 | 파일과 디렉토리 모두 생성 | 파일만 생성 |
링크 기능 | 파일 또는 디렉토리 이름에 대한 링크를 가리킴 | 원본 파일에 대한 참조 또는 포인터 |
원본 파일 삭제할 경우 | 액세스 불가능 | 액세스 가능 |
inode 번호 | 다른 inode 번호 | 동일한 inode 번호 |
다른 파티션 링크 여부 | 다른 파티션에 링크 가능 | 다른 파티션에 링크 불가능 |
특징 | - 데이터 접근 시, 원본 i-node를 경유한다. - 디렉터리도 가능하다. |
- i-node로 바로 데이터에 접근한다. - 디렉터리는 지원하지 않음 |