Hard Link와 Soft Link 둘 다 어떤 파일(폴더)에 대한 링크을 만드는데 사용된다.
Soft Link는 다른 말로 symbolic link 또는 symlink 라고도 한다.
Hard Link와 Soft Link 그 차이를 이해하기 전에 아이노드라는 개념을 알아야한다.
inode
위 그림을 살펴보자.
파일의 구조라는게 파일의 이름을 나타내는 부분과 그 옆에 아이노드의 주소를 가리키는 부분이 있다. 그림에서 Directory Entry라고 표시된 부분이 해당 부분이다. 여기서 아이노드의 주소가 아이노드를 가리키는데 아이노드는 해당 파일과 그 파일이 가지고 있는 데이터를 연결하고 있다. 그래서 사실 파일의 데이터는 그 파일이 온전히 가지고 있는게 아니고 아이노드라는 녀석이 해당 데이터의 주소를 가지고 있게 되고 그 주소를 따라가면 실제 그 파일의 데이터를 나타내는 부분이 있게 된다. 이것을 아이노드라고 한다.
Hard Link / Soft Link
하드 링크와 소프트 링크는 아래 그림을 보면 쉽게 이해가 된다.
소프트 링크는 내가 어떤 특정 파일을 링크할 때 링크하고 있는 데이터가 원본을 가리키게 된다 (오른쪽 Link Data가 원본 파일을 가리키고 있음). 소프트 링크로 링크를 만들면 그 파일 역시 아이노드를 가진다 (우측 심볼릭 링크가 자기만의 아이노드를 가지고 있음).
반면, 하드 링크는 원본의 아이노드를 공유하는 구조이다(왼쪽 같은 아이노드를 하드링크와 원본이 가리키고 있음). 그래서 하드 링크는 같은 아이노드를 가리키는 여러개의 하드 링크로 만들어질 수 있고 이 때 아이노드는 무조건 원본 아이노드 딱 하나다.
소프트 링크 다른 말로 심볼릭 링크가 많이 쓰이는 방법이다. 소프트 링크를 사용하면 웬만하면 절대 경로로 링크를 걸어주는 게 좋다. 왜냐하면, 상대 경로로 만들어주면 파일을 옮겼을 때 링크가 깨지기 때문. 하드 링크는 그럴 필요가 없다. 왜냐하면 하드 링크는 아이노드를 아예 공유하기 때문이다.
'Linux' 카테고리의 다른 글
Vim 필수 기능 정리 (0) | 2023.12.27 |
---|---|
사용자와 그룹과 파일 권한 (0) | 2023.10.04 |
Linux란 ? (0) | 2023.10.04 |
[Linux]: 내가 쓰려고 기록한 유용한 Commands (2) | 2023.10.04 |