inotifywait 및 rsync가 임시 파일 이름을 인쇄하고 있습니다.

inotifywait 및 rsync가 임시 파일 이름을 인쇄하고 있습니다.

디렉터리에 새 파일이 생성될 때마다 원격 서버에 POST 요청을 보내는 bash 스크립트를 작성하고 있습니다. RSYNC를 사용하여 여러 디렉터리를 홈 디렉터리에 동기화합니다. 그런 다음 홈 디렉토리가 모니터링되고 inotifywait새 파일이 감지되면 스크립트 실행이 트리거됩니다.

문제는 RSYNC가 여기서 읽은 파일을 생성하는 방식입니다.Rsync 임시 파일 확장자RSYNC는 mktemp이를 사용하여 유사한 파일 이름을 생성하지만 .filesynced.x12fj1복사가 완료된 후 이름을 바꿉니다.filesynced

따라서 내 inotifywaitbash 스크립트에서는 이름이 바뀐 파일 이름이 아닌 임시 파일의 파일 이름을 얻습니다. 이동하고 이름을 바꾼 후 파일 이름을 얻을 수 있도록 누군가가 나에게 올바른 방향을 알려줄 수 있는지 궁금합니다.

#!/bin/bash
inotifywait -m -q -e close_write /edi-files |
    while read path action file; do
        echo "The file '$file' appeared in directory '$path' via '$action'"
        # send contents of $file to api endpoint.
    done

예약 된 일들:

*/1 * * * * rsync -avz --no-perms --no-o --no-g --remove-source-files /home/dir3/upload/ /home/dir2/upload/ /home/dir1/upload/ /edi-files/

현재 출력:

The file '.xxxxxxx1.ATM.8I2mrS' appeared in directory '/edi-files/' via 'CLOSE_WRITE,CLOSE'
The file '.xxxxxxx2.ATM.MnIMPP' appeared in directory '/edi-files/' via 'CLOSE_WRITE,CLOSE'
The file '.xxxxxxx3.txt.3FSceN' appeared in directory '/edi-files/' via 'CLOSE_WRITE,CLOSE'
The file '.xxxxxxx4.txt.GoIDCK' appeared in directory '/edi-files/' via 'CLOSE_WRITE,CLOSE'

관련 정보