티스토리 뷰

하드링크 vs 소프트링크

 

 

[inode]

정의 : Kernel이 관리하고 있는 파일을 위한 메타 데이터

 

사용자는 file 명을 가지고 파일을 액세스 하려고 하면, 내부적으로는 파일이름과 맵핑된 inode 번호로 맵핑된다.

 

- inode가 가진 정보

1) 파일 모드(퍼미션)

2) 링크 수

3) 소유자명

4) 그룹명

5) 파일크기

6) 마지막 접근 정보

7) 마지막 수정 정보

8) 아이노드 수정 정보 

 

 

[하드링크]

하드링크는 원본 파일의 inode의 위치를 가르킨다. 파일명만 다르지 사실상 하드링크, 원본파일을 구분할 수 없다.

(원본과 복사본의 차이가 없다)

 

왜냐하면 파일 시스템에 있는 데이터를 복사한 것이 아니라, inode 번호만 복사했기 때문이다. 따라서 실제 파일은 1개만 존재하는 셈이 된다.

 

[소프트링크]

윈도우 시스템에서 제공하는 바로가기 기능과 매우 유사.

원본 파일에 대한 정보가 포함되어 있지 않고, 원본 파일 위치에 대한 포인터만 포함한다. 즉 새로운 inode를 가진 링크파일이 생성된다.

 

(자료 출처 : https://koromoon.blogspot.com/2018/05/inode-symbolic-link-hard-link.html)

 

 

 

 

[하드링크 소프트링크 API]

 

 

 

 

[하드링크 생성]

hello_world 원본 파일의 inode와 새로 생성된 하드링크인 hello_world_hardlink의 inode가 1845604로 동일한것을 확인할 수 있다. 즉 동일한 inode를 가르키고 있다. 또한 Links : 2가 되어있는 것을 볼 수 있다. inode를 가리키고 있는 것이 2개임을 확인할 수 있는 부분이다.

 

[소프트링크 생성]

소프트링크는 보는것과 같이 -> 화살표 표시가 들어가 있다. hello_world_symlink 파일이 hello_world를 가리키고 있는 것이다. 소프트링크 파일은 파일권한 맨 앞자리에 'l' 이 들어가 있다. 그리고 inode 또한 원본 파일과 다르다는 것을 확인할 수 있다.

 

 

[소프트링크 하드링크 생성 소스코드]

 

 

 

 

 

 

 

 

'Back-end' 카테고리의 다른 글

작성해야할 개발 기술  (0) 2021.01.11
[리눅스] 파일 속성  (0) 2020.04.27
C언어 문자자료형 사용하기  (0) 2020.01.05
파일 포지션  (0) 2019.12.22
[루비] 예외 처리  (0) 2019.02.13
댓글