Existe uma ferramenta que conecta a dois diretórios e os sincroniza assim que algo muda?

7

Tenho diretórios de simulação enormes nas duas máquinas server e cluster , que quero manter sincronizado. A situação básica é que os arquivos raramente mudam, mas quando uma simulação é feita, muitos arquivos grandes mudam de uma vez, o que eu gostaria de ter sincronizado assim que eles são fechados.

Portanto, eu assumo que um cronjob usando rsync não é ideal, cronjob porque ele chama rsync em um intervalo de tempo fixo que eu provavelmente escolheria muito grande ou pequeno, rsync porque ele não deveria ter que verificar se há modificações de arquivos já que eu e o trabalho de simulação são os únicos que os acessam.

Então, minha ideia seria usar inotify (veja esta questão ) para detectar alterações no diretório de simulação em um loop e então bifurcam-se em um rsync para os arquivos alterados. No entanto, não tenho certeza se isso pode acidentalmente pular arquivos fechados apenas quando a bifurcação estiver concluída. (e, possivelmente, eu também acabaria em um loop infinito devido a inotify chamando rsync para sincronizar o arquivo apenas sincronizado novamente ...) Então, antes de tentar muito lá, repito a minha pergunta:

Is there a tool that hooks to two directories and synchronizes them as soon as something changes?

(basicamente isso seria algo como uma caixa de depósito off-line, eu acho)

    
por Tobias Kienzler 21.02.2011 / 14:25

1 resposta

6

Confira lsyncd .

Lsyncd watches a local directory trees event monitor interface (inotify). It aggregates and combines events for a few seconds and then spawns one (or more) process(es) to synchronize the changes. By default this is rsync. Lsyncd is thus a light-weight live mirror solution that is comparatively easy to install not requiring new filesystems or blockdevices and does not hamper local filesystem performance.

Não é de mão dupla, mas pela sua pergunta eu entendi que você não precisa disso também. Se você precisar de sincronização bidirecional, Unison é uma boa resposta, exceto que não há suporte inotify. Além disso, confira esta questão .

A terceira coisa da sincronização bidirecional é o DRBD , sistema de sincronização em tempo real em nível de bloco, incluído no kernel da linha principal. Infelizmente, como é quase síncrono, requer conexão rápida com a Internet.

    
por 21.02.2011 / 14:51