Meu aplicativo usa o rsync para copiar arquivos do driver de rede para o local como cache para melhorar o desempenho.
Mas como meu aplicativo pode ser executado em paralelo, assim como o rsync, pode haver um caso em que 2 instâncias desincronizar novamentesendo executado em paralelo na mesma origem e diretório.
Encontrei um problema em que o destino não sincroniza completamente (deixando um subdiretório vazio). então duvido que seja um problema de rsync, então
- O rsync é seguro para copiar arquivos da mesma origem para o mesmo destino em paralelo?
- Existe alguma opção disponível para garantir a exatidão de tal operação.
As opções que estou usando são:
rsync -a --copy-unsafe-links --delete
Responder1
Provavelmente é seguro executar o rsyn em paralelo, mas não é eficiente, pois provavelmente os arquivos serão transferidos duas vezes, já que o rsync compõe a lista de arquivos a serem transferidos no início. É claro que sempre há uma pequena chance de que o mesmo arquivo seja transferido simultaneamente por ambos os rsyncs, mas o conteúdo deve ser o mesmo posteriormente.
Para evitar execuções duplas, geralmente escrevo um script que verifica e, caso contrário, touch
escrevo um arquivo de bloqueio que é removido no final. Como opção, você pode usar uma armadilha em seu script para limpar o arquivo de bloqueio se interromper o script ou quando ocorrer um erro (use 'help trap' em seu shell). Até onde eu sei, não existe tal mecanismo de bloqueio no próprio rsync (o que seria difícil de implementar de qualquer maneira).