Preciso implantar um processo automatizado (via script cron de 1 min) que procure por arquivos tar em um diretório específico. Se um arquivo tar for encontrado, ele não será desviado para o local apropriado e o arquivo tar será excluído.
Os arquivos tar são copiados automaticamente para este servidor pelo SSH de outro servidor. Em alguns casos, os arquivos tar são extremamente grandes, com muitos arquivos.
O problema que eu espero encontrar: Se demorar> 1 minuto para o arquivo tar ser copiado no servidor, e o script cron for executado uma vez a cada minuto, ele verá o arquivo .tar.gz e tentará descompacte-o, mesmo que o arquivo tar ainda esteja no processo de gravação.
Existe alguma maneira (via comandos bash) de testar se um arquivo está sendo gravado atualmente ou se é apenas um arquivo parcial, etc?
Uma alternativa em que eu pensava era fazer com que o arquivo fosse copiado como uma extensão de arquivo diferente (como .tar.gz.part
) e renomeado para .tar.gz
após a conclusão da transferência. Mas achei que tentaria descobrir se existe simplesmente uma maneira de determinar se o arquivo está inteiro na linha de comando primeiro ... Alguma pista?
rsync
usa um nome de arquivo temporário durante a transferência (por padrão) e somente após a transferência completa do arquivo, renomeia-o para o nome do arquivo real.