O que acontece se um script cron tentar copiar um diretório ao mesmo tempo em que outro processo está gravando nele?

1

Por exemplo, se eu tiver um processo java que (uma vez a cada 2 horas) faça um backup de um arquivo grande, como 500mb, e coloque-o na pasta A do HDD, e quero programar um script cron para copiar a pasta inteira A para o HDD B uma vez por dia ... o que acontece se o script cron acender enquanto o processo java está no meio da escrita para a pasta A? Vai esperar? Será que vai simplesmente ignorar o arquivo que ainda não está sendo escrito?

    
por BigOmega 09.05.2012 / 19:54

1 resposta

5

Em geral, os comandos do Unix tratam os arquivos da mesma forma, estejam eles abertos ou sendo gravados ou não. Portanto, se uma tarefa cron estiver usando cp para copiar um diretório, o que é copiado dependerá apenas do que está no diretório no momento em que o comando cp examinar o diretório. Se um arquivo é escrito apenas parcialmente no momento em que cp o visita, uma cópia parcialmente escrita será produzida. Se você quiser evitar tais ocorrências, você precisa implementar um esquema de bloqueio entre os processos cooperativos para impedir o acesso simultâneo ao diretório.

    
por 09.05.2012 / 20:19

Tags