Hardlink


title: 2025-09-20 author: 강병호 (이름) date: 2025-09-20 (날짜) category: TIL/강병호/2025/09 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —

“일부 시스템들은 동일한 파일에 대해 여러개의 이름(디렉터리 항목)이 존재할 수 있는 하드링크를 허용한다. 이 경우 실제 파일 내용은 마지막 링크가 삭제될때까지 삭제되지 않는다”

파일의 구조를 알아야 합니다. 대부분의 파일시스템에서 파일은 두 부분으로 나뉩니다.

  • 메타데이터(metadata): 파일의 소유자, 권한, 생성 시간 등 파일 자체의 정보를 담고 있는 부분입니다. 이 정보는 아이노드(inode)라고 부르는 데이터 구조에 저장됩니다. 각 아이노드는 고유한 번호를 가집니다.
  • 실제 데이터(data): 파일의 실제 내용(텍스트, 이미지 등)을 담고 있는 부분입니다.

하드링크와 파일 삭제

하드링크는 단순히 하나의 아이노드를 가리키는 또 다른 이름일 뿐입니다. 즉, A라는 파일에 하드링크 B를 생성하면, A와 B는 모두 동일한 아이노드 번호를 공유하게 됩니다. 이 아이노드에는 파일의 실제 데이터가 저장된 위치 정보가 들어있습니다.

각 아이노드에는 링크 카운트(Link Count)라는 속성이 있습니다. 이 카운터는 해당 아이노드를 가리키는 하드링크(이름)의 수를 나타냅니다.

  • 파일 생성: 파일 A를 만들면 링크 카운트가 1이 됩니다.
  • 하드링크 생성: 파일 A에 대한 하드링크 B를 만들면 링크 카운트가 2로 증가합니다.
  • 파일 삭제: A를 삭제해도 링크 카운트는 1로 줄어들 뿐, 파일의 실제 데이터는 삭제되지 않습니다.
  • 마지막 링크 삭제: B를 삭제하면 링크 카운트가 0이 됩니다. 이 때 운영체제는 링크 카운트가 0이 된 아이노드와 연결된 실제 데이터를 비로소 삭제합니다.

따라서, 실제 파일 내용은 마지막 하드링크(이름)가 삭제되어 링크 카운트가 0이 될 때까지 보존됩니다.

results matching ""

    No results matching ""