특정 아이 노드 번호에 속하는 파일을 빠르게 찾습니다


44

이 명령을 알고 있습니다.

find /path/to/mountpoint -inum <inode number>

그러나 매우 느린 검색입니다.이 작업을 수행하는 더 빠른 방법이 있어야한다고 생각합니다. 아무도 더 빠른 방법을 알고 있습니까?


inode를 사용하여 검색을 본 것은 이번이 처음입니다. 언제 inode로 검색해야합니까?
Coren

@Coren-앞에 "-"가있는 파일이있는 경우 일반적으로 사용됩니다. ls -li를 사용하여 inode를 찾은 다음 find를 찾을 수 있습니다. -inum <inode> -exec rm -i {} \; 이것은 파일을 제거 할 수 있도록하는 벨트 앤 브레 서 방식입니다. 물론 'rm--filename'또는 rm ./-filename 또는 rm "-filename"도 가능합니다.
swisscheese

2
selinux를 사용하는 @Coren에서 로그 메시지에는 inode가 포함되지만 전체 경로는 포함되지 않습니다. 따라서 참조되는 파일을 찾으려면 inode를 검색해야합니다. (어쨌든 내 유스 케이스)
Patrick

1
@Coren 예를 들어 파일에 여러 개의 하드 링크가있는 경우 내용이 더 이상 사용되지 않고 파일을 삭제하려고하지만 파일 이름 중 하나만 찾은 후 다른 파일을 삭제하려고합니다.
Gilles 'SO- 악한 중지'

2
그냥 사용하십시오 find / -inum <inode>. 그것은보다 휴대 성이 뛰어나고 debugfs훨씬 안정적으로 작동합니다 (예 : 장치와 같이 하드 드라이브의 파일에 속하지 않는 경로를 찾을 수 있습니다).
7heo.tk

답변:


33

ext4 파일 시스템의 debugfs경우 다음 예제와 같이 사용할 수 있습니다 .

$ sudo debugfs -R 'ncheck 393094' /dev/sda2 2>/dev/null
Inode   Pathname
393094  /home/enzotib/examples.desktop

대답은 즉각적이지는 않지만보다 낫습니다 find.
획득 한 출력을 쉽게 파싱하여 파일 이름을 얻을 수 있습니다.


파일 시스템 유형을 지정했을 것입니다. 이 작업을 수행하는 방법이 파일 시스템마다 다를 수는 없습니다. XFS를 사용하고 있으므로 귀하의 답변이 정확하다고 확신하지만 구체적으로 도움이되지는 않습니다.
Alex

6

btrfs

man btrfs-inspect-internal 말한다 :

   inode-resolve [-v] <ino> <path>
       (needs root privileges)

       resolve paths to all files with given inode number ino in a given
       subvolume at path, ie. all hardlinks

       Options

       -v
           verbose mode, print count of returned paths and ioctl()
           return value

예:

  • sudo btrfs inspect-internal inode-resolve 15380 /home

0

대부분의 Unices에서 찾을 수 있고 Linux 어딘가에서 사용 가능한 fsdb 명령을 볼 수 있습니다. 파일의 코어 내 inode 구조에 액세스 할 수있는 강력한 명령이므로주의하십시오. 구문도 매우 간결합니다.

AIX 용 fsdb

Solaris의 fsdb 재 링크 파일

fsdb 실제로 당신이 아이 노드의 이름을 발견 할 수는 없지만, 그것은 수행 이 그래서 파일 자체 (또는 적어도 그것의 데이터 블록 포인터) 당신을 "포팅"당신이 그것을 지정할 때 직접 본질적으로, 아이 노드에 액세스 할 수 있습니다 그 점에서 find ;-)보다 빠릅니다.
귀하의 질문에 파일로 수행하려는 작업이 지정되어 있지 않습니다. NFS 파일 핸들을 디코딩하는 perchance입니까?

sc.


글쎄, 나는 정보와 관련하여 무엇을 할 것인지가 내 질문과 관련이 없다고 생각했기 때문에 그것을 생략했습니다. 제 경우에는 호기심 문제 일뿐입니다. 내 xfs_fsr 조각 모음은 조각 모음을 수행하는 inode를 뱉어 내고 하나는 5000 조각 이상으로 매우 조각화되어 있으며 어떤 파일인지 궁금합니다. find작동하지만 너무 느립니다.
Alex

내 rhel vm이 부팅 할 때마다 전체 (20 분!) fsck을 수행하고 / var / opt / messages에 결함이 있다고보고 된 inode 번호 만 문제를 해결하려고합니다. (
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.