inotifywait 和 rsync 正在打印临时文件名

inotifywait 和 rsync 正在打印临时文件名

我正在编写一个 bash 脚本,每次在目录中创建新文件时,该脚本都会向远程服务器发出 POST 请求。我使用 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'

相关内容