파일은 콘텐츠 블록, inode, 둘 다, 파일 이름 또는 기타 항목으로 정의됩니까? 기본적으로 파일의 정의는 무엇입니까?
예를 들어
두 개의 하드 링크는 동일한 inode와 콘텐츠 블록을 공유할 수 있지만 파일 이름은 다릅니다. 동일한 파일로 간주됩니까, 아니면 다른 파일로 간주됩니까?
inode는 다르지만 콘텐츠 블록은 동일한 파일이 있습니까? 같은 파일로 간주되나요?
감사해요.
답변1
나는 우리가 장치 파일이나 유닉스 도메인 소켓 또는 이와 유사한 덜 전통적인 파일이 아닌 "일반" 파일에 대해 이야기하고 있다고 가정합니다.
파일에는 이름, 메타데이터 및 데이터가 있다고 말하고 싶습니다.
이는 파일 이름, inode 및 블록에 직접적으로 해당됩니다.
두 개의 하드 링크 파일 이름은 단일 파일에 대한 두 개의 이름일 뿐이라고 생각합니다.
나는 Unix, Linux 또는 *BSD에서 매우 특이한 개입 없이 동일한 데이터 블록을 참조하는 두 개의 inode를 가질 수 있다고 믿지 않습니다. suid 프로그램은 디스크의 장치 파일을 열고 동일한 데이터 블록을 가리키도록 두 inode를 조작할 수 있지만 이것이 자연스럽게 일어날지는 진심으로 의심됩니다.
답변2
파일 이름은 inode를 찾는 데 사용됩니다. 다른 사람은 없습니다. 인덱스 노드는 파일에 대한 주요 참조 지점입니다. 파일 크기가 0이거나 inode의 블록 목록 부분에 맞을 만큼 작으며 파일 시스템에 이러한 최적화가 적용되어 있으면 파일에 데이터 블록이 전혀 없을 수 있습니다. inode를 가리키는 두 개의 하드 링크가 있는 경우에도 이름이 여러 개인 파일은 여전히 하나입니다. 이를 통해 열려 있는 파일의 이름 바꾸기 및 삭제와 같은 작업을 수행할 수 있습니다. 이렇게 하면 기본 식별자가 파일 이름이고 사용 중인 파일을 교체하려면 업그레이드할 때마다 재부팅해야 하는 Windows와 달리 실행 중인 시스템에서 소프트웨어를 더 쉽게 업그레이드할 수 있습니다.