diretórios home de sincronização cruzada com operação desconectada (Linux / Ubuntu)

3

Aqui está o cenário que estou tentando fazer funcionar. Eu tenho três máquinas, J, T e R que precisam eventualmente obter os mesmos dados (pequenas diferenças temporárias são boas). J e T são áreas de trabalho ativadas e desativadas todos os dias. R é um servidor de arquivos remoto. Os usuários em J e T podem fazer alterações em dados compartilhados em um diretório (compartilhado por meio de permissões de grupo) e em seus próprios diretórios base. É bastante comum que apenas uma das duas máquinas J e T esteja funcionando a qualquer momento. A conexão com a Internet para R é bastante confiável, mas R está longe e a latência torna indesejável o uso como o servidor de arquivos principal. Eu tentei com o NFS e foi bem doloroso. A conexão não é confiável o suficiente para depender dela para acesso em todos os momentos.

Não é uma opção, neste momento, colocar em um servidor local e apenas servir uma unidade compartilhada via NFS ou CIFS. Isso tornaria muito mais fácil, mas não é uma opção.

Eu tentei cruzar exportações NFS montadas e consegui alguns scripts de shell simples para montar as unidades etc. mas se J montou a unidade de T e usou isso como o compartilhamento de arquivos de base e depois T foi desativado, os dados mudanças seriam perdidas. Então eu preciso de alguma maneira para sincronizar dados constantemente.

Eu olhei para o rsync e finalmente encontrei o csync (não o csync2, que é um projeto totalmente diferente). Isso me permite executar sincronizações periódicas entre as máquinas. No entanto, está no cron e não é feito sob demanda. Eu também achei o lsyncd que parece que seria bom para copiar as mudanças quando as duas estações de trabalho estivessem funcionando, mas não é bom em descobrir o que mudou quando o sistema local estava inativo e a outra estação estava fazendo mudanças.

Eu olhei para o Ubuntu One, Dropbox etc. e os limites de arquivos gratuitos são um problema. O orçamento é muito, muito limitado e os custos recorrentes devem ser evitados. O iFolder pode ser uma opção, mas parece que precisa de um servidor em algum lugar.

O que eu preferiria seria algo assim:

  • monte cópias remotas e locais em um diretório de trabalho. Faça alterações lá e faça com que o sistema de arquivos as envie para os outros locais.

  • No login, inicie uma nova sincronização com as outras duas máquinas para acompanhar as alterações feitas enquanto a máquina estava desligada.

É possível que uma das duas estações esteja desativada por vários dias, portanto, muitas alterações podem se acumular. Existem apenas dois usuários usuais, então a taxa de alterações não é tão alta, mas depois de uma semana elas se acumulam.

Existe um módulo FUSE com algo como RAID1 sobre sistemas de arquivos? Devido à longa duração de possíveis desconexões, coisas como Gluster FS, AFS e NBD não parecem apropriadas.

Se houvesse uma maneira de fazer o failover do cliente NFS (outra estação de trabalho caía, use a cópia local) que também funcionaria. Eu fiz algumas pesquisas sobre isso e outras que alguns mencionam que "o autofs deveria suportar isso, mas não faz", eu não encontrei muito.

Eu preferiria uma solução baseada em NFS / CIFS porque eu poderia obter bloqueios de arquivo e não teríamos problemas potenciais com usuários tentando modificar o mesmo arquivo ao mesmo tempo. Mas não sei como resolver o failover do lado do cliente.

Como você resolveria isso? Novamente, ter um servidor de arquivos local não é uma opção no momento.

    
por Kyle 28.10.2010 / 00:22

2 respostas

1

Coda deve atender às suas necessidades. É um sistema de arquivos de rede que suporta strongmente o cache local e a operação do cliente desconectado.

    
por 28.10.2010 / 01:09
0

Se você quiser voltar para uma ferramenta de sincronização, confira uníssono . É uma sincronização bidirecional baseada nas bibliotecas rsync e pode manipular as coisas que estão sendo modificadas. Pode salvar arquivos onde houve um conflito (atualizado em ambos os lados) para uma pasta de backup.

A sincronização ainda precisará ser iniciada pelo usuário, pelo cron ou por algum tipo de script de inicialização.

    
por 28.10.2010 / 01:08