심볼릭 링크는 디렉토리에 파일이나 항목으로 저장됩니까?

심볼릭 링크는 디렉토리에 파일이나 항목으로 저장됩니까?

내 질문은 Linux 파일 시스템에서 심볼릭 링크가 구현되는 방식과 관련이 있습니다.

  1. 일반 파일이 저장되어 있습니까(inode를 사용하여) 아니면 디렉토리의 특수 항목입니까?
  2. 파일 시스템에 저장되어 있는 경우 바이너리 파일과 어떻게 구별됩니까? 심볼릭 링크에는 특별한 매직 넘버가 할당되어 있습니까?

答え1

"때에 따라 다르지".

이는 파일 시스템 구현과 링크 길이에 따라 다릅니다.

예를 들어, ext4에서 심볼릭 링크의 대상이 충분히 작은 경우(60바이트 정도) 이는 inode 자체에 저장되며 데이터 블록은 사용되지 않습니다. 그러나 대상이 더 크면 데이터 블록이 할당되고 내용이 거기에 저장됩니다.

다른 파일 시스템에는 이 "inode에 저장" 옵션이 없을 수도 있습니다.

st_mode전통적으로 심볼릭 링크는 "디렉터리", "문자 장치", "블록 장치", "FIFO", "소켓"과 마찬가지로 inode의 "모드"( ) 필드에 있는 비트에 의해 결정됩니다 . 일반적으로 애플리케이션은 stat()파일 이름(또는 유사한 이름)에 대해 작업을 수행한 다음 S_ISLNK()결과 st_mode필드에 대해 테스트를 수행할 수 있습니다.

関連情報