전송이 완료된 후 폴더에서 새 파일 이동

전송이 완료된 후 폴더에서 새 파일 이동

서버를 임대하겠습니다. 어떤 사람들은 할당된 폴더(저는 사용을 고려 중 sftp)에 일부 파일을 업로드하고 파일 전송이 완료되면 서버의 내 폴더로 이동하고 싶습니다. 새 파일이 있는지 감지를 사용할 수 있지만 watch전송이 시작되면 파일이 거기에 있을 것이고 내 스크립트는 파일 전송이 완료되기 전에 즉시 해당 파일을 이동합니다. 이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까? 전송이 완료되었는지 확인하는 스크립트를 어떻게 작성할 수 있나요? sftp로그를 만들 수 있나요 ? 파일을 이동하기 위해 해당 로그를 감지해 볼 수도 있습니다. 미리 감사드립니다.

답변1

do를 사용하면 inotifywait원하는 결과를 얻을 수 있습니다. 명령을 실행하기 전에 파일 쓰기가 완료될 때까지 기다리는 기능입니다.

다음은 폴더에 새 파일이 있는지 지속적으로 모니터링하고 파일 쓰기가 완료된 후 루프에서 명령을 실행합니다.

WATCH_DIR=/directory/to/monitor
DEST_DIR=/x/y/z

/usr/bin/inotifywait --recursive --monitor --quiet -e moved_to -e close_write --format '%w%f' "$WATCH_DIR" | while read -r INPUT_FILE; do

mv "$0" "$DEST_DIR"

done

자세한 구성 옵션은 다음을 참조하세요.https://linux.die.net/man/1/inotifywatch

관련 정보