2011-02-15 2 views

답변

4

파일이 이동 된 디렉토리와 파일이 이동 된 디렉토리를 모두보고 있으면 소스 디렉토리에 IN_MOVED_FROM 이벤트가 수신되고 대상 디렉토리에 IN_MOVED_TO 이벤트가 수신됩니다 동일 cookie. 그런 다음 두 이벤트의 name 필드를 사용하여 파일을 이동할 위치를 찾을 수 있습니다.

소스 디렉토리 또는 대상 디렉토리 만보고있는 경우 이벤트 중 하나만 표시되므로 정보의 절반 만 차지하게됩니다. 이것은 inotify의 한계입니다.

+0

"IN_MOVE_SELF"로 파일을 모니터하는 것은 어떻습니까? 나는 파일이 어디로 옮겨 질지 모른다. 그래서 그것이 움직일 때 새로운 파일 경로를 알아야한다. – Amanda

+0

아니요, 말했듯이 이동 한 디렉토리를 보지 않는 한 이동 대상에 대한 정보를 얻지 못합니다. – hobbs

0

당신은 이동하기 전에 파일에 파일 기술자를 잡아에 심볼릭 링크를 읽을 수 있습니다 :

'/proc/self/fd/' + $fd 

$ fd에이 파일의 설명입니다,이 파일 기술자가 파일을 가리 킵니다. 참고 나는 이것을 ext4에서만 테스트했으며 LVM2와 함께 작동하지만 OverlayFS에서는 작동하지 않습니다. 또한 파일 설명자를 열면 파일에 대한 제거 이벤트가 실행되지 않습니다.

리눅스 커널 버전간에 문제가있을 수도 있습니다.

관련 문제