Temos um processo que é executado todas as noites em vários sistemas Linux e Darwin (Macintosh) para fazer backup de objetos do sistema de arquivos. Também estamos executando a sincronização de arquivos unitários com a opção -repeat=watch, para que a sincronização seja o mais atualizada possível.
Nosso objetivo é encerrar normalmente os processos uníssonos antes da janela de backup e reiniciá-los depois. Atualmente, usamos o método relativamente deselegante de kill -SIGTERM
no sistema que iniciou cada processo de sincronização. Embora funcione, não é o ideal e espero que haja uma maneira ordenada de fazer isso que eu possa ter perdido. (É preciso examinar a documentação, por exemplo, para descobrir que o SIGUSR1 pode ser usado para fechar um arquivo de log, então espero que da mesma forma haja outro SIG* que possa ser usado para esse propósito.
Também seria bom incorporar isso ao nosso processo de desligamento do sistema.
Isso pode ser feito atualmente (a versão MAC é "versão uníssona 2.53.3 (ocaml 4.14.0)"; a versão unix (UBUNTU) é "versão uníssona 2.48.4".) Se não houver uma maneira elegante, farei o recurso solicitar.
De acordo com o manual do unision , o sinal educado de parada de observação é SIGUSR2.
Ele possui um manipulador SIGTERM para sair normalmente. Em geral, com ferramentas relacionadas a arquivos, a limpeza significaria remover arquivos temporários cuja cópia não foi concluída, além de desbloquear quaisquer recursos.
Implemente e teste um script que envie SIGUSR2, aguarde um pouco e, se ainda estiver em execução, envie SIGTERM. Por exemplo, se estiver usando um serviço systemd no Linux, o script ExecStop pode enviar este sinal, esperar um pouco e verificar o status da sincronização. Então, o sinal TERM usual do gerenciador de serviços garantiria o desligamento. Confirme que seus conjuntos de arquivos estão intactos. O fato de o programa de sincronização ser consistente com falhas não significa necessariamente que seus arquivos estejam todos no mesmo momento.
Parece que você tem um método de backup independente do processo de sincronização, o que é bom.
Não considero uma sincronização como essa por si só um backup suficiente. Bons backups são offline, imutáveis e em diferentes mídias. Se um acidente ou malware gravasse dados incorretos em um lado, eles seriam sincronizados com o outro. E a resolução de conflitos de sincronização pode introduzir complicações, em vez de simplesmente criar um arquivo a partir de uma árvore.
Um meio independente de backup também oferece garantias de que as alterações no procedimento de sincronização de arquivos não causam perda de dados. Na pior das hipóteses, pegue arquivos de backup, protegidos com segurança contra gravações.