Como evitar a passagem de diretórios recursivos para sincronizar dois diretórios? [fechadas]

1

Eu vejo muitos percursos recursivos inúteis no diretório:

  • rsync
  • uníssono
  • owncloud

Todos os aplicativos acima (e muitos mais) fazem o percurso recursivo de diretórios repetidas vezes. Desde que o aplicativo não sabe se um arquivo (no fundo da estrutura de diretórios) mudou ou não.

Inotify existe, mas o AFAIK não é escalonado para vários milhares de diretórios.

Eu acho que não há solução. Mas talvez eu esteja sentindo falta de algo.

Por exemplo, pegue este arquivo:

a/b/c/d.txt

E dois servidores A e B

Se você tiver um milhão (ou mais) de arquivos e diretórios, todos os aplicativos acima precisam verificar se o mtime de um arquivo foi alterado.

Não tem jeito mais rápido?

Se a alteração de mtime de um arquivo se acumulasse nos diretórios pai, bastaria verificar o mtime dos diretórios superiores nos dois servidores. Dessa forma, o aplicativo pode ignorar a pesquisa inútil de alterações.

A pergunta: Como evitar a travessia de diretório recursiva para sincronizar dois diretórios?

Por favor, deixe comentários se você tiver dúvidas ou se precisar de mais detalhes. Obrigado.

    
por guettli 05.07.2015 / 13:16

1 resposta

6

Há uma razão para que todos esses utilitários usem a passagem de diretórios recursivos para descobrir arquivos alterados. Não há melhor maneira.

Inotify exists, but does AFAIK not scale to several thousand directories.

Não só isso, mas você tem que ouvir continuamente (digamos, como um daemon) e se você perder uma única atualização, então você tem que verificar novamente tudo.

Ain't there no faster way?

Não, desculpe.

Se você tiver uma ótima ideia, publique-a (mas um site de perguntas e respostas não é o lugar)!

    
por 05.07.2015 / 13:42