동일한 inode 번호를 가진 모든 파일을 나열하시겠습니까?

동일한 inode 번호를 가진 모든 파일을 나열하시겠습니까?

ls -li디렉터리에서 작업을 수행 하면 다음과 같은 결과가 나온다고 가정해 보겠습니다 .

12353538 -rw-r--r-- 6 me me 1650 2013-01-10 16:33 fun.txt

출력에 표시된 대로 파일은fun.txt가지다6하드 링크는 다음과 같습니다.12353538.

파일의 모든 하드 링크(즉, 동일한 inode 번호를 가진 파일)를 찾는 방법은 무엇입니까?

답변1

기본 전제는 다음을 사용하는 것입니다.

find /mount/point -mount -samefile /mount/point/your/file

시스템에서 findmnt다음과 같이 마운트 지점을 내보낼 수 있습니다.

file=/path/to/your/file
find "$(findmnt -o TARGET -cenT "$file")" -mount -samefile "$file"

대상 파일이 해당 파일 시스템에 있지 않는 한 검색하지 않는 것이 중요합니다. /왜냐하면 inode 번호는 마운트된 모든 파일 시스템에서 재사용되기 때문입니다.

답변2

inode 번호가 이미 있는 경우 find -inum옵션을 사용할 수 있습니다.

find /mount/point -xdev -inum 12353538

(일부 find구현에서는 이를 표준 으로만 지원하지만 이에 -mount상응하는 기능 도 지원합니다 .)-xdev-xdev

답변3

ffind~에서탐정 키트삭제된 파일 이름을 포함하여 특정 inode에 대한 모든 파일 이름을 찾을 수 있습니다.

예를 들어:

sudo ffind -a /dev/sda3 $(stat --format=%i ~/just_a_test)

생산하다

* /home/me/empty_1
* /home/me/hard_link_to_empty1
/home/me/just_a_test
/home/me/hard_link_to_just_a_test

별표가 있는 항목은 더 이상 존재하지 않는 오래된 파일 이름입니다(파일 이름이 바뀌거나 삭제되었기 때문).


$(stat --format=%i ~/just_a_test)파일의 inode를 가져오는 데 사용하고 있습니다 .

프로그래밍 방식으로 파일 이름의 파티션을 얻으려면( /dev/sda3이전 예에서) 다음을 사용할 수 있습니다.df:

file=~/just_a_test; sudo ffind -a $(df -P "$file" | awk 'END{print $1}') $(stat --format=%i "$file")

답변4

이전 답변에 감사드립니다.

바이너리 는 statinode뿐만 아니라 해당 장치의 마운트 지점도 제공할 수 있습니다. 아래 코드 조각에서는 이를 사용하여 "일반적인" 사용 사례를 해결합니다.

fn_hardlinks() {
  declare target; target="$1" && shift
  [ ! -e "$target" ] && \
    { echo "[error] invalid target: '$target'" 1>&2; exit 1; }
  stat '/' 2>/dev/null 1>&2 || \
    { echo "[error] no functioning 'stat' binary found'" 1>&2; exit 1; }
  declare mount; mount="$(stat -c '%m' "$target")"
  declare inode; inode="$(stat -c '%i' "$target")"
  [ "x${mount[-1]}" != "x/" ] && mount+="/"
  find "$mount" -xdev -inum "$inode" 2>/dev/null
}

alias hardlinks=fn_hardlinks

그리고 다음을 실행하세요:

> hardlinks ./resources/sphinx/gitinfo.py
/home/user/build/z-documentation/resources/sphinx/gitinfo.py
/home/user/build/sphinx-gitinfo/git/sphinx-gitinfo/gitinfo.py

추신: 참고 exitvs는 return사용 방법에 따라 다릅니다!

관련 정보