我正在编写一个 bash 脚本,每次在目录中创建新文件时,该脚本都会向远程服务器发出 POST 请求。我使用 RSYNC 将多个目录同步到主目录。然后监视主目录,inotifywait
当检测到新文件时将触发脚本执行。
问题是 RSYNC 创建我在这里读到的文件的方式Rsync 临时文件扩展名RSYNC 使用mktemp
它创建类似的文件名,但在完成复制后.filesynced.x12fj1
会将它们重命名为。filesynced
因此,在我的inotifywait
bash 脚本中,我获取的是临时文件的文件名,而不是重命名后的文件名。我想知道是否有人可以为我指出正确的方向,以便我可以在移动和重命名后获取文件名。
#!/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'