심볼릭 링크와 하드 링크의 차이점에 대해 적어보려 한다.
우선 두 가지 모두 파일을 링크해서 사용하는 것은 동일하다.
차이점을 쉽게 이해하려면 유닉스 계열 시스템의 아이노드(Inode)에 대해 이해해야 한다.
아이노드(Inode)란 유닉스 계열 파일 시스템에서 사용하는 자료구조이다.
파일의 정보가 담기는 곳이며, 모든 파일은 각자의 inode 를 가지고 있다.
파일의 내용을 적어놓는 것이 아니라 파일의 내용이 담긴 주소를 가지고 있다.
하드 링크(Hard Link)의 경우는 원본 파일과 완전히 동일한 inode 를 가진다.
원본이 삭제되더라도 원본과 동일한 inode 를 갖고 있기에 링크 파일의 사용이 가능하다.
또한, 링크 파일을 수정하여 원본 파일을 수정할 수도 있다는 장점이 있다.
여러 경로에 하드 링크로 파일을 만들어놓은 후에 수정할 일이 발생한다면,
한가지 파일만 수정해서 모두 수정하는 결과를 기대할 수 있다.
ln 명령어에 아무 옵션 없이 입력할 경우 하드링크 파일이 생성된다.
/home/a 라는 파일을 하드 링크로 /home/link/ 밑에 링크를 걸었다.
이후 /home/link/a 라는 링크된 파일을 수정했더니 /home/a 파일도 수정된 것을 볼 수 있다.
원본 파일을 삭제해도 하드링크 된 파일은 삭제되지 않는 것을 볼 수 있다.
심볼릭 링크(Symbolic Link)는 원본 파일의 이름을 가리키는 링크이다.
원본이 삭제될 경우 링크 파일은 더이상 사용이 불가능하다. 링크 파일은 원본 파일에 대해 의존적이라는 것을 알 수 있다.
심볼릭 링크된 파일은 파일 이름 옆에 원본 파일을 표시해준다.
참고로 디렉토리의 경우는 심볼릭 링크만 가능하며 하드링크는 불가능하다.
이는 리눅스 파일 시스템이 트리 구조를 가지고 있기 때문인데, 루트 노드부터 자식 노드까지 위에서 아래로 이어지는 계층 구조를 이루고 있다. 자식 노드는 부모 노드를 가리킬 수 없다.
트리 구조에서 하드 링크를 이용해 상위 디렉토리를 하위 디렉토리로 가지게 되면 트리 구조가 무너지게 된다.
파일시스템에 심각한 문제를 야기할 수 있기 때문에 디렉토리에 대한 하드링크는 불가능하도록 되어 있다.
'IT·리눅스 > 리눅스' 카테고리의 다른 글
☕ 리눅스 top 명령어 — 시스템 상태를 실시간으로 확인하는 방법 (0) | 2025.04.23 |
---|---|
[Linux] APM 설치하기 - 1.APM 구조원리 (0) | 2024.09.07 |
[Linux] 리눅스 캐시 메모리 정리하기 (0) | 2024.09.06 |
[Linux] 심볼릭 링크 만들기 (0) | 2024.08.09 |
[Linux] 큰 용량의 더미 파일 만들기 (0) | 2024.08.09 |