다음과 같은 명령을 실행하면:
find / -inum 12582925
동일한 번호가 할당된 서로 다른 마운트된 파일 시스템(다른 파티션)에 있는 두 개의 파일을 나열하는 것이 가능합니까? 단일 파일 시스템에서 또는 마운트된 모든 파일 시스템에서 inode 번호가 고유합니까?
답변1
Inode 번호는 단일 파일 시스템에서만 고유합니다. 곧 접하게 될 예는 ext2/3/4 파일 시스템의 루트 inode(2)입니다.
$ ls -id / /home
2 / 2 /home
실행하면 (GNU 가정 find
)
find / -printf "%i %p\n" | sort -n | less
여러 파일 시스템이 있는 시스템에서는 매우 많은 중복된 inode 번호를 볼 수 있습니다(그러나 출력에는 하드 링크도 포함되므로 약간의 주의가 필요합니다).
inode 번호로 파일을 찾을 때 시작 경로만 있는 경우 옵션을 사용하여 시작 경로가 포함된 파일 시스템으로 검색을 제한할 수 find
있습니다 -xdev
.
find / -xdev -inum 12582925
inode 번호가 12582925인 파일만 루트 파일 시스템에서 찾을 수 있습니다. ( -xdev
여러 시작 경로에서도 작동하지만 이 특별한 경우에는 유용성이 떨어집니다.)
st_dev
(특정 시스템에서) 파일을 고유하게 식별하는 것은 inode 번호와 장치 번호(GNU의 구조에서)의 조합입니다 . 두 개의 디렉토리 항목이 동일한 inode 및 dev 번호를 갖는 경우 동일한 파일을 참조합니다(동일한 파일 시스템의 두 개의 다른 마운트를 통해 바인드 마운트될 수 있음).st_ino
stat
%D %i
find
-printf
일부 구현에는 동일한 장치 및 inode 번호를 가진 파일을 찾는 조건자가 find
있습니다 . -samefile
대부분의 [
/ 구현에는 두 파일 경로가 동일한 파일을 참조하는지 여부를 확인하는 연산자 test
도 있습니다 (심볼릭 링크 확인 이후에도 불구하고).-ef
답변2
예, 동일한 inode 번호가 다른 파일 시스템에 나타날 수 있습니다. 정확한 값을 지정하려면 inode 번호(st_ino)뿐만 아니라 inode가 위치한 장치(st_dev, 자체는 장치의 일반 클래스인 dev_major와 특정 클래스인 dev_minor로 구성됨)도 필요합니다. 사례).
커플(st_dev, st_ino)~ 할 것이다특정 파일을 식별합니다(적어도 inode가 있는 파일 시스템을 마운트 해제하지 않은 경우).
상술 한 바와 같이인덱스 노드(7):
inode가 위치한 장치
각 inode(및 관련 파일)는 장치에서 호스팅되는 파일 시스템에 있습니다. 장치는 기본 ID(장치의 일반 클래스를 식별함)와 보조 ID(일반 클래스 내의 특정 인스턴스를 식별함)의 조합으로 식별됩니다.
아이노드 번호
파일 시스템의 모든 파일에는 고유한 inode 번호가 있습니다. 인덱스 노드 번호는 다음과 같습니다.파일 시스템 내에서만 고유함(즉,서로 다른 파일 시스템이 동일한 inode 번호를 사용할 수 있음, 이것이 하드 링크가 파일 시스템 경계를 넘을 수 없는 이유입니다.