Sincronização de arquivos locais em tempo real

5

Como posso configurar uma sincronização de arquivos instant para dois diretórios locais? O problema é que preciso disso em tempo real (15, 10 ou até 5 segundos é muito lento) e não quero que o diretório raiz de destino seja criado.

Por exemplo, algo semelhante a ...

cp -fr sourcea/* /some/destdir
cp -fr sourceb/* /some/destdir
cp -fr sourcec/* /some/destdir

Capturar exclusões também seria bom, embora não seja um problema.

Eu não quero o "sourcex" criado dentro do destdir. (daí o *). Eu tentei usar o rsync, que aparentemente não estava perto nem perto de tempo real, bem como vários sistemas genéricos de sincronização. No entanto, a maioria desejará uma sincronização de 1 para 1, em vez de apenas conteúdo.

Alguma sugestão? Eu tenho lutado contra isso por um tempo agora, então qualquer ajuda seria muito apreciada!

    
por Adrian Schneider 17.02.2012 / 06:14

1 resposta

8

Uma sobreposição do sistema de arquivos provavelmente funcionaria melhor para isso. Usando algo como aufs , você pode criar um diretório 'virtual' a partir de vários diretórios combinados. Você pode configurar se as gravações devem se propagar de volta aos diretórios originais ou usar um método copy-on-write para deixar os originais sozinhos ou não permitir gravações por completo.

No entanto, para responder à sua pergunta original, você pode usar algo como lsyncd para acionar um rsync assim que um arquivo é modificado. O lsyncd usa o rsync, que é capaz de sincronizar o conteúdo do diretório sem manter o nome do diretório. Geralmente, a maneira de fazer isso é sincronizar sourcea/. para /some/destdir/ . A parte importante é o ponto no final do caminho de origem. Este é um truque geral que pode ser usado para outras coisas além do rsync, como o cp.

    
por 17.02.2012 / 06:39