원격 디렉터리에 배포할 파일을 업로드합니다. 원격 서버에는 디렉터리에서 새 파일을 모니터링하는 스크립트가 있습니다.
inotifywait --monitor --event create --format '%f' --quiet /foo
새 파일이 감지되면 배포 프로세스가 시작됩니다.
문제는 업로드에 시간이 걸리고 파일이 쓰기 시작하자마자 감지된다는 것입니다. 따라서 부분 파일을 사용하려고 하기 때문에 배포가 실패합니다.
inotifywait
새 파일이 완전히 생성된 후에만 보고되도록 지터를 제거하는 방법이 있습니까 ?
답변1
경험한 것처럼 create
이벤트에 초점을 맞추는 것은 그다지 유용하지 않습니다. 이러한 이벤트는 파일이 생성될 때 발생하지만 데이터가 기록되었는지, 언제 기록되었는지는 알려주지 않습니다.완전한그것에 데이터를 쓰십시오.
일반적으로 모니터링 close
이나 close_write
이벤트가 필요합니다. 매뉴얼 페이지에서:
활동
close_write
감시된 파일 또는 감시된 디렉터리의 파일이 쓰기 가능 모드로 열린 후 닫혔습니다. 이는 반드시 파일이 작성되었음을 의미하지는 않습니다.
close_nowrite
감시된 파일 또는 감시된 디렉터리의 파일이 읽기 전용 모드로 열린 후 닫혔습니다.
close
감시된 파일 또는 감시된 디렉터리의 파일은 열린 방법에 관계없이 닫힙니다. 이는 실제로
close_write
및 를 수신하여 수행되므로close_nowrite
수신된 닫기 이벤트는 CLOSE가 아닌 이들 중 하나로 출력됩니다.