Sincronização sem verificar todos os arquivos

5

Eu preciso sincronizar frequentemente dois diretórios grandes (com muitos subdiretórios e arquivos) entre um Windows XP e um servidor Unix. (Atualmente, faço isso com o agradável WinSCP , mas tentei vários outros.)

Meu problema é que toda vez que sincronizo, o software verifica todos os arquivos para ver se foram atualizados. Isso leva cerca de 1 minuto.

Sonho com um software que monitore os dois sistemas cujo diretório foi atualizado e não visitaria um diretório a menos que fosse necessário.

Como geralmente altero apenas alguns arquivos, isso deve acelerar o tempo de sincronização de 1 minuto para no máximo 1 segundo.

Existe algum software que faça isso, gratuito ou não?

Uma solução seria sincronizar os dois sistemas com algo remoto como o DropBox. Há várias razões pelas quais eu não quero fazer isso. Retarda tudo, custa, e também não preciso dos meus arquivos em nenhum outro lugar.

Obrigado.

Manu
fonte
Eu gostaria de ouvir algumas soluções para isso também. No momento, eu tenho uma configuração de rsync via cygwin, mas ao longo dos anos as pastas passaram a conter muitos milhões de minúsculos JPGs e leva cerca de 24 horas para concluir uma sincronização - mesmo quando apenas quando um novo JPG foi adicionado - porque todo o tempo gasto na verificação dos JPGs existentes não foi alterado.
inspirado
Portanto, seu problema não é verificar todos os arquivos, mas na verdade quanto tempo leva?
Daniel Beck
por que não armazena hashes de arquivos e, em seguida, verifica se os hashes foram alterados, deve ser mais rápido.
Jonathan.

Respostas:

0

É uma transferência unidirecional (ou seja, fazer backup de arquivos novos e alterados no lado do Windows XP para o servidor Unix, nada está mudando a partir do final do Unix)? Isso pode tornar muito mais fácil encontrar uma solução.

Para evitar a verificação de todos os arquivos inalterados existentes, você precisará de algo que verifique uma lista de alterações. No XP, existe o Diário de alterações do NTFS. Os sistemas Unix / Linux possuem sistemas de arquivos inotify e journaling. Mas encontrar um único software que faça AMBOS pode ser difícil. É por isso que espero que este seja um espelho incremental unidirecional e não uma verdadeira "sincronização".

Ah ... devo mencionar que outro método é com um driver de sistema de arquivos (filtro). No Linux, a estrutura "fuse" torna isso bastante simples, mas essa abordagem é menos usada porque é muito mais complicada do que processar o diário.

Ben Voigt
fonte
É uma verdadeira sincronização. Eu edito os arquivos do lado do unix (ao qual eu realmente me conecto através de uma pasta do Windows através de uma rede local) e remotamente do Windows. Obrigado pela sua contribuição. Conceitualmente esta é uma tarefa muito simples, claro, e estou sempre espantado com o quão difícil é implementar essas coisas ;-)
Manu
@Emanuele: Como eu disse, as informações estão disponíveis no Windows e no Unix, é uma questão de encontrar um software que seja otimizado nas duas plataformas. Mas agora você tem algumas palavras-chave para usar ao procurar programas / ler listas de recursos.
Ben Voigt
@ Ben: Como eu não gerencio o servidor unix, eu me pergunto: as informações deveriam estar em um servidor padrão (em vez de exigir a instalação / modificação do sistema de arquivos) e serão acessíveis por mim? Em caso afirmativo, você acha que seria complicado escrever um aplicativo como esse? Eu acho que muitas pessoas se beneficiariam com isso. BTW: Agradeço suas dicas, se não houver mais nada, aceitarei sua resposta.
Manu
@ Emanuele: Alguns dos sistemas de arquivos mais comuns fazem diário por diário, mas vários não, por isso você precisa descobrir com seu provedor qual é o sistema de arquivos. E a leitura do diário do sistema de arquivos de uma partição física provavelmente não é possível a partir de uma conta sem privilégios. O OOTH inotify deve funcionar bem no espaço do usuário (apenas certifique-se de ter sempre o observador em segundo plano, diferente do diário, o inotify não informa o que aconteceu quando você não estava olhando) ou um sistema de arquivos montado no loopback (em vez de uma partição) daria a você acesso total de leitura aos dados do diário.
Ben Voigt
Eu adoraria se você pudesse fornecer mais detalhes sobre sua abordagem: existe um bom lugar para ler sobre esses arquivos de diário, onde eles estão armazenados, como posso analisá-los? Se não fosse uma sincronização verdadeira, você conhece um aplicativo? Além disso, qual idioma você usaria para codificar esse aplicativo?
Manu