Se estiver apenas sendo adicionado (e não modificado no meio), você pode simplesmente executar tail -f
nele. Ele deve aguardar por qualquer dado recém-adicionado e imprimi-lo, e você pode dizer em que posição começar:
tail -c 0 -f datafile # start at the current file end
tail -c +123 -f datafile # start at byte 123
Para realmente mover os dados para algum lugar, a passagem por ssh
deve funcionar:
Portanto, se a extremidade remota já tiver os primeiros 123456 bytes:
tail -c +123456 -f datafile | ssh user@somehost 'cat >> datafile.copy'
(É claro que você precisa verificar o tamanho do arquivo no controle remoto antes de iniciar o pipeline).
Se, ao invés disso, você tiver modificações no meio do arquivo, precisará de algum tipo de camada de registro no próprio programa. As capturas instantâneas do sistema de arquivos podem funcionar, mas o intervalo de um segundo pode ser muito difícil, especialmente porque você precisaria varrer o arquivo para as alterações de qualquer maneira.