
Existe uma maneira de sincronizar novamente uma pasta para uma pasta de servidor removida, mas mover tudo somente após a conclusão de toda a transferência?
Não quero que os arquivos sejam movidos um após o outro, porque isso causaria problemas no servidor da Web em execução.
Prefiro que a pasta completa seja movida depois que tudo for transferido no servidor (o que leva cerca de 1s)
Responder1
Você está procurando o--delay-atualizaçõesopção. De man rsync
:
--delay-updates This option puts the temporary file from each updated file into a holding directory until the end of the transfer, at which time all the files are renamed into place in rapid succession. This attempts to make the updating of the files a little more atomic. [...] See also the "atomic-rsync" perl script in the "support" subdir for an update algorithm that is even more atomic (it uses --link-dest and a parallel hierarchy of files).
Responder2
A maneira mais segura é fazer com que o rsync coloque os arquivos em um diretório alternativo fora do docroot do servidor web. Em seguida, altere a configuração dos servidores para apontar o docroot para a nova pasta e sinalizar ao servidor web para executar uma"gracioso"recarregar sua configuração. Com o Apache isso deve garantir que nenhuma solicitação seja mal tratada ou descartada.
O USR1 ou sinal gracioso faz com que o processo pai aconselhe os filhos a sair após a solicitação atual (ou a sair imediatamente se não estiverem servindo nada). O pai relê seus arquivos de configuração e reabre seus arquivos de log. À medida que cada filho morre, o pai o substitui por um filho da nova geração da configuração, que começa a atender novas solicitações imediatamente.
Em outras palavras, eu automatizaria isso usando um script de shell e ssh em vez de tentar encontrar opções de rsync para gerenciar seu servidor web.