Symbolic Link & Hard Link란?

YOBY·2023년 11월 30일
0

Inode란?

Inode(아이노드)은 리눅스 파일 시스템에서 파일과 디렉터리를 식별하고 관리하는 데 사용되는 데이터 구조입니다. 각 파일이나 디렉터리는 시스템 내의 고유한 Inode를 가지고 있습니다. Inode는 파일의 메타데이터 정보를 저장하며, 이 정보에는 파일의 권한, 소유자, 크기, 생성 시간, 수정 시간, 링크 수 등이 포함됩니다.



하드링크란?

하드링크(Hard Link)는 리눅스 및 유닉스 기반 운영 체제에서 파일에 대한 추가의 파일 이름(경로)을 생성하는 메커니즘입니다.
이는 기본적으로 같은 Inode 번호를 공유하는 두 개의 파일 엔트리를 만들어내는 것입니다. Inode는 파일의 메타데이터와 데이터 블록의 위치 등을 저장하는 구조체로, 파일 시스템에서 각 파일이나 디렉터리마다 부여되는 고유한 식별자입니다.

하드링크 특징

  • Inode을 공유: 하드링크는 원본 파일과 새로운 하드링크 간에 같은 Inode을 공유합니다. 따라서 같은 파일의 서로 다른 이름이라고 생각할 수 있습니다.

  • 디스크 공간 절약: 하드링크를 생성하더라도 실제 데이터는 한 번만 디스크에 저장됩니다. 파일이나 디렉터리의 크기에 상관없이 링크 수만 증가하게 됩니다.

  • 링크 삭제와 파일의 실제 삭제: 모든 하드링크가 삭제되면(즉, 링크 수가 0이 될 때), Inode와 관련된 실제 데이터 블록이 디스크에서 해제되며 파일이 삭제됩니다.

  • 원본 파일과 링크 간 동기화: 하드링크를 통해 파일을 수정하면, 다른 모든 하드링크에서도 동일한 내용을 볼 수 있습니다. 이는 동일한 Inode을 공유하므로 하나의 위치를 수정하면 나머지도 수정된 내용을 반영하게 됩니다.

  • 하드링크 제한: 디렉터리에 대한 하드링크는 일반적으로 허용되지 않습니다. 이것은 디렉터리가 트리 구조를 형성하고 있어, 하드링크로 인한 순환 참조와 같은 문제를 방지하기 위함입니다.

하드링크를 생성하는 명령어는 ln 입니다.
예를 들어, 다음은 file.txt 파일에 대한 하드링크를 file_link.txt로 생성하는 명령어입니다:

ln file.txt file_link.txt

이제 file.txt와 file_link.txt는 동일한 파일의 서로 다른 이름이며, 하나를 수정하면 다른 하나에도 영향을 미칩니다.


심볼릭 링크란?

심볼릭 링크(Symbolic Link 또는 Symlink)는 리눅스와 유닉스 기반 운영 체제에서 파일이나 디렉터리에 대한 간접적인 참조를 만드는데 사용되는 파일입니다.
심볼릭 링크는 원본 파일이나 디렉터리의 경로를 가지고 있으며, 이 경로를 통해 원본 파일이나 디렉터리에 대한 참조를 제공합니다.

심볼릭 링크 특징

  • 파일 크기: 심볼릭 링크 파일은 원본 파일의 경로를 저장하고 있기 때문에 매우 작은 크기를 가지고 있습니다. 이 크기는 저장된 경로의 길이에 의해 결정됩니다.

  • Inode 공유하지 않음: 심볼릭 링크는 원본 파일과는 다른 Inode을 가집니다. 따라서 별도의 파일 엔트리이며, 원본 파일과 다른 메타데이터를 가질 수 있습니다.

  • 원본 파일이나 디렉터리의 경로 저장: 심볼릭 링크는 원본 파일이나 디렉터리에 대한 경로를 저장하고 있으며, 이 경로를 통해 실제 파일에 대한 간접적인 참조를 제공합니다.

  • 링크 삭제와 원본 파일: 원본 파일이나 디렉터리가 삭제되면 심볼릭 링크는 더 이상 유효하지 않게 됩니다. 하지만 원본 파일이나 디렉터리를 삭제하지 않고 심볼릭 링크만 삭제한다면, 원본 파일은 그대로 남아있습니다.

  • 하드 링크 제한 없음: 심볼릭 링크는 파일이나 디렉터리에 대한 간접적인 참조를 제공하므로, 하드 링크와 달리 디렉터리에 대해서도 생성이 가능합니다.

  • 순환 참조 가능: 심볼릭 링크는 경로를 가지고 있기 때문에, 서로 다른 파일이나 디렉터리를 가리키는 링크 간에 순환 참조가 발생할 수 있습니다.

심볼릭 링크를 생성하는 명령어는 ln을 사용하며, -s 옵션을 통해 심볼릭 링크를 생성할 수 있습니다. 아래는 예시입니다:

ln -s /path/to/original/file /path/to/symlink

이 명령어는 /path/to/original/file에 대한 심볼릭 링크를 /path/to/symlink로 생성합니다.

0개의 댓글