본문 바로가기
프로그래밍/Linux

[Linux] 리눅스 하드 링크(hard link), 심볼릭 링크(소프트 링크, symbolic link), inode

by HI_Ai 2023. 9. 1.
반응형

하드링크와 소프트(심볼릭) 링크는 파일 시스템에서 파일이나 디렉토리에 대한 참조를 생성하는 방법 중 두 가지입니다. 두 링크 유형의 주요 차이와 생성 방법에 대해 설명하겠습니다. 비교 전 inode에 대해 간략하게 확인하겠습니다.

 

inode

inode는 "index node"의 약자로, UNIX 기반의 파일 시스템에서 각 파일과 디렉토리에 대한 메타데이터를 저장하는 데이터 구조를 가리킵니다. 각 파일은 고유한 inode 번호를 가지며, 이 번호는 파일 시스템 내에서 해당 파일을 고유하게 식별합니다.

inode에 저장되는 정보는 다음과 같습니다
파일 타입: 일반 파일, 디렉토리, 심볼릭 링크, 장치 파일 등의 파일 타입 정보
파일 권한: 읽기, 쓰기, 실행 권한 등
소유자와 그룹: 파일의 소유자 ID와 그룹 ID
파일 크기
파일 생성, 수정, 접근 시간: 타임스탬프 정보
파일의 데이터 블록 포인터: 파일의 실제 데이터가 저장된 블록 위치에 대한 포인터

 

인터넷 파일 시스템에서는, 파일 이름과 해당 파일의 내용은 서로 다른 곳에 저장됩니다. 파일 이름은 디렉토리 엔트리에 저장되며, 이 엔트리는 해당 파일의 inode 번호를 가리킵니다. 따라서, 하드 링크를 생성할 때 원본 파일과 동일한 inode 번호를 참조하는 새로운 디렉토리 엔트리가 만들어집니다.

 

 

다음으로는 하드링크와 심볼릭 링크에 대해 알아보겠습니다.


 

하드링크 (Hard Link)

하드링크는 파일의 데이터 블록에 대한 추가적인 참조를 생성합니다. 기본적으로 파일은 이름과 데이터 블록 사이의 하나의 링크를 갖습니다. 하드링크를 추가하면 동일한 데이터 블록에 여러 이름이 참조될 수 있습니다.

 

원본 파일과 링크는 동일한 inode 번호를 공유합니다. 원본 파일이 삭제되더라도 하드링크는 여전히 데이터에 액세스할 수 있습니다. 디렉토리에 대한 하드링크는 만들 수 없습니다


생성 방법: ln 명령어를 사용합니다.

ln 원본파일 링크이름

 

심볼릭 링크 (소프트 링크, Symbolic Link)

심볼릭 링크는 원본 파일에 대한 간접적인 포인터나 참조를 생성합니다. 원본 파일과 링크는 다른 inode 번호를 갖습니다.

링크는 원본 파일의 경로를 참조하므로, 원본 파일이 이동, 이름 변경, 삭제되면 링크가 깨집니다. 파일뿐만 아니라 디렉토리에 대해서도 소프트 링크를 생성할 수 있습니다.


생성 방법: ln 명령어에 -s 옵션을 사용합니다.

ln -s 원본파일 또는 원본디렉토리 링크이름

즉, 하드링크는 동일한 데이터 블록을 참조하는 다른 이름을 생성하고, 심볼릭 링크는 원본 파일에 대한 간접적인 참조나 포인터를 생성합니다. 두 유형의 링크는 서로 다른 목적과 특성을 가지므로, 사용 사례에 따라 적절한 링크 유형을 선택하는 것이 중요합니다

 

그리고 하드링크와 복사의 차이점에 대해서도 알아보겠습니다.

 

 


하드 링크

 - 동일한 inode 참조: 하드 링크는 원본 파일과 동일한 inode를 가리킵니다. 따라서 원본과 하드 링크는 같은 데이터 블록에 접근합니다.
 - 저장 공간: 하드 링크를 생성하면 추가적인 디스크 공간이 소비되지 않습니다. 같은 데이터를 가리키기 때문입니다.
 - 변경 사항: 원본 파일이나 하드 링크 중 하나를 수정하면 다른 쪽도 동일한 변경 사항을 반영합니다. 왜냐하면 둘 다 같은 데이터 블록에 접근하기 때문입니다.
 - 삭제: 원본 파일이나 하드 링크 중 하나를 삭제하면 다른 하나는 영향을 받지 않습니다. 데이터는 모든 하드 링크가 삭제될 때까지 디스크에서 유지됩니다.

 

복사

 - 다른 inode 참조: 파일을 복사하면 새로운 inode와 별도의 데이터 블록이 생성됩니다.
 - 저장 공간: 파일을 복사하면 원본 파일의 크기만큼 추가적인 디스크 공간이 소비됩니다.
 - 변경 사항: 원본 파일이나 복사본 중 하나를 수정해도 다른 쪽은 영향을 받지 않습니다. 각 파일은 독립적인 데이터 블록에 저장되기 때문입니다.
 - 삭제: 원본 파일이나 복사본 중 하나를 삭제하면 다른 하나는 영향을 받지 않습니다. 각 파일은 독립적입니다.

 

하드 링크는 원본 파일과 "동일한" 데이터를 참조하는 반면, 파일 복사는 "동일한 내용의" 새로운 데이터를 생성합니다. 따라서 하드 링크는 원본과 실질적으로 동일한 데이터를 공유하는 반면, 복사된 파일은 원본과 독립적인 별도의 데이터를 가집니다.

반응형