IT 그리고 정보보안/Knowledge base

하드 링크 / 심볼릭 링크

plummmm 2021. 4. 18. 20:10
반응형

하드 링크와 심볼릭 링크는 쉽게 생각하면, 바로가기를 생성하는 것이다.

하지만 두가지는 차이점이 있음..

 

먼저 하드 링크는 i-node를 공유해서 사용한다.

그 말은, 그냥 바로가기로써의 기능뿐 아니라 하드링크 파일이 수정되면

원본파일도 변경된다. 항상 같은 상태를 유지하는 것.

 

하드 링크는 같은 파일시스템에서만 생성가능하다.

그리고 디렉토리에 대한 하드링크는 관리자만이 생성할 수 있음. 

 

또한 원본파일이 삭제되어도 하드링크에는 문제가 없다. 

원본 파일의 i-node를 공유하기 때문이다.

 

 

동일한 i-node를 가르키고 하드링크를 생성하면 i-node의 link count 필드의 

값이 하나 증가한다.

 

파일을 삭제할 때 실제 데이터 블럭에서 파일을 삭제하고자 하면 

link count가 0이 되어야만 한다. ( unlink()로 링크 카운트를 줄일 수 있음.. )

rm명령을 이용하면 링크 카운트를 하나 감소시키는 것이다.

 

결과적으로 말하면 "이름이 다른" 똑같은 파일을 만드는 것이다.

 

 

그렇다면 심볼릭링크는 어떻게 다른가.

엄밀히 말하면 이게 진짜 바로가기와 같은 것이다.

 

별도의 i-node를 가지는 파일을 생성하고, 그것이 원본 파일을 가르키는 포인터를 가진다.

아무나 만들 수 있으며, 다른 파일 시스템에서도 생성이 가능하다.

 

이건 원본파일이 삭제되면 무의미한 파일이다.

바로가기라고 했음..

 

 

그리고 디렉토리에 대한 얘기를 좀 해야하는데,

디렉토리에 대한 링크 횟수 필드가 가지는 의미에 대해 알아보자.

. 디렉토리와 ..디렉토리가 있는거 알것이다. (모든 디렉토리가)

 

보통 디렉토리를 생성하면 링크 카운트가 2이다.

왜? .(도트)와 ..(도트-도트) 디렉토리가 하드링크로 모든 디렉토리에 생성되어 있음.

그래서 2다. 서브 디렉토리가 생긴다면 갯수만큼 링크 카운트가 올라가겠지.

반응형

'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글

리눅스 환경의 프로세스(Process)  (0) 2021.04.18
리눅스 파일 시간값  (0) 2021.04.18
리눅스 프로세스의 파일 공유  (0) 2021.04.18
아이노드 ( i-node )  (0) 2021.04.18
strace, ltrace  (0) 2021.04.18