본문 바로가기

computer science

cs - 리눅스에서 하드 링크와 심볼릭 링크

리눅스에서 하드 링크와 심볼릭 링크 이해하기

리눅스 파일 시스템을 이해하는 데 있어서 '하드 링크'와 '심볼릭 링크'는 중요한 개념입니다. 이 글에서는 이 두 종류의 링크가 어떻게 다른지, 그리고 각각 언제 사용되는지에 대해 설명하겠습니다.

 

하드 링크란?

하드 링크는 원본 파일과 동일한 파일 시스템 내의 데이터 블록에 대한 직접적인 링크입니다.

 

특징:

  • 원본 파일과 같은 inode 번호를 공유합니다.
  • 원본 파일을 삭제해도 링크된 파일의 데이터는 유지됩니다.
  • 같은 파일 시스템 내에서만 생성 가능합니다.
  • 디렉토리에 대한 하드 링크는 대부분의 시스템에서 생성할 수 없습니다.

 

사용 예시:

echo "Hello, this is a test file." > example.txt ln example.txt example_hardlink.txt

심볼릭 링크란?

심볼릭 링크는 원본 파일이나 디렉토리에 대한 경로를 가리키는 파일입니다.

특징:

  • 원본 파일의 경로를 가리키는 참조 링크입니다.
  • 원본 파일이 이동되거나 삭제되면 심볼릭 링크는 더 이상 유효하지 않습니다.
  • 다른 파일 시스템에 있는 파일이나 디렉토리에 대해서도 링크를 생성할 수 있습니다.
  • 디렉토리에 대해서도 심볼릭 링크를 생성할 수 있습니다.

사용 예시:

ln -s example.txt example_symlink.txt

차이점 요약

  • 하드 링크는 원본 파일과 동일한 데이터와 inode를 공유하는 반면, 심볼릭 링크는 원본 파일의 경로를 참조합니다.
  • 하드 링크는 원본 파일이 삭제되어도 데이터가 유지되지만, 심볼릭 링크는 원본 파일이 삭제되면 더 이상 유효하지 않습니다.
  • 하드 링크는 같은 파일 시스템 내에서만 생성할 수 있으나, 심볼릭 링크는 파일 시스템을 넘나들며 생성할 수 있습니다.

주석: inode란?

  • inode (Index Node): 리눅스 및 유닉스 파일 시스템에서 파일의 메타데이터를 저장하는 데이터 구조입니다.
  • inode에는 파일의 크기, 소유자, 권한, 파일이 저장된 위치 등의 정보가 포함됩니다.
  • 파일 시스템 내에서 각 파일은 고유한 inode 번호를 가지며, 이를 통해 파일 시스템이 파일을 식별합니다.

 

 

결론

 

 

하드 링크와 심볼릭 링크는 각각의 사용 사례와 장단점이 있습니다. 파일을 관리하고 참조할 때 이들의 특징을 이해하고 적절히 사용하는 것이 중요합니다.