파일의 모든 "별칭" 목록(디렉토리 유형 포함)을 효율적으로 얻는 방법은 무엇입니까?

파일의 모든 "별칭" 목록(디렉토리 유형 포함)을 효율적으로 얻는 방법은 무엇입니까?

파일 가정: 파일의 모든 별칭 목록(디렉토리 유형 포함)을 효율적으로 얻는 방법:

  1. 여러 하드 링크, 여러 소프트 링크 및 다중 레벨 소프트 링크가 있을 수 있습니다.
  2. 동일한 파일 시스템의 다른 위치에 마운트된 디렉토리에 존재할 수 있음
  3. 1에서 언급한 기능에 대한 링크가 있는 디렉토리 아래에 존재할 수 있습니다.

inode를 사용하는 가능한 솔루션이 있습니까?

답변1

하드 링크는 두 링크의 inode 번호를 비교하여 식별할 수 있습니다.그리고장치 번호(두 개의 서로 다른 마운트된 파일 시스템에 동일한 inode 번호를 가진 파일이 있을 수 있지만 장치 번호는 다릅니다). 장치/inode를 수동으로 읽는 방법을 사용하거나 stat $file이를 find대신 수행할 수 있습니다 -samefile. 동일한 장치 내에서만 검색하면 하드 링크를 보다 효율적으로 검색할 수 있습니다.

find $fsroot/. -mount -samefile $myfile

소프트 링크는 어디에나 위치할 수 있기 때문에 더 어렵습니다. inode/장치를 식별하려면 이를 역참조해야 합니다. 다음 명령을 사용하여 수동으로 수행하거나 stat -L다음 명령을 사용하여 자동으로 수행할 수 있습니다 find -L.

find -L / -samefile $myfile

이 됩니다.반품하드 링크를 찾아보세요. find특정 인덱스 노드를 가리키는 소프트 링크만 검색하는 쉬운 방법 은 없다고 생각합니다 .

일부 파일 시스템은 이 정보를 더 효율적으로 알려줄 수 있지만 일반적으로 모든 파일을 검사하고 싶을 것입니다.

관련 정보