Estou no processo de escrever um script bash que fará uma solicitação POST para um servidor remoto toda vez que um novo arquivo for criado em um diretório. Eu uso RSYNC para sincronizar vários diretórios para um diretório principal. O diretório principal está sendo assistido por inotifywait
, que acionará uma execução de script quando detectar novos arquivos.
O problema é o modo como o RSYNC está criando os arquivos que eu li aqui Extensão de arquivo temporário do Rsync que o RSYNC usa mktemp
, o que cria nomes de arquivos como .filesynced.x12fj1
, mas os renomeará como filesynced
após a conclusão da cópia.
Portanto, no meu script inotifywait
bash estou recebendo os nomes de arquivos dos arquivos temporários não o nome do arquivo depois que ele foi renomeado. Eu estou querendo saber se alguém pode me apontar na direção certa para que eu possa obter o nome do arquivo depois que ele foi movido e renomeado.
#!/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
CRON JOB:
*/1 * * * * rsync -avz --no-perms --no-o --no-g --remove-source-files /home/dir3/upload/ /home/dir2/upload/ /home/dir1/upload/ /edi-files/
SAÍDA ATUAL:
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'