O rsync é realmente bidirecional ou mais unidirecional?

4

Então, eu entendo que o rsync funciona usando um algoritmo de soma de verificação que atualiza os arquivos de acordo com o tamanho e a data do arquivo. Mas esta sincronização não depende de como a origem e o destino são chamados? A ordem da origem para o destino não altera o comportamento do que é sincronizado?

Deixe-me ir aonde estou indo ...

Obviamente, este input1

rsync -e ssh -varz ~/local/directory/ [email protected]:~/remoteFolder/

não é o mesmo que input2

rsync -e ssh -varz [email protected]:~/remoteFolder/ ~/local/directory/

Mas eu achei que de qualquer forma você chamou o rsync, o ponto principal era que qualquer arquivo que fosse mais recente fosse atualizado entre os destinos local e remoto.

No entanto, parece que depende de o novo arquivo estar localizado abaixo da origem e não do local de destino. Se eu atualizei file1 na minha máquina local (mesmo, mas arquivo1 no servidor), salvei-o e usei code2 para sincronizar entre locais, notei que o A nova versão do file1 na minha máquina local não é enviada para o servidor. Na verdade, ele substituiu o arquivo atualizado pela versão mais antiga. Se eu usar input2 , ele faz upload modificado para o servidor.

Existe uma maneira de executar o rsync no qual ele literalmente sincroniza arquivos novos e modificados , não importando se os locais de origem ou destino são chamados primeiro de acordo com o local do arquivo mais recente / modificado?

    
por bretonics 25.09.2014 / 03:44

2 respostas

9

Não, rsync apenas sincroniza arquivos em uma direção. Pense nisso como uma versão inteligente e mais capaz de cp (ou mv se você usar a opção --remove-source-files ): inteligente no sentido de tentar pular dados que já existem no destino, e capazes de sentido que ele pode fazer algumas coisas cp não, como remover arquivos no destino que foram excluídos na origem. Mas no fundo, ele realmente faz a mesma coisa, copiando de uma fonte para um destino.

Como Patrick mencionado em um comentário, unison fará o que você está procurando, atualizando em ambas as direções. Porém, não é uma ferramenta padrão - muitos sistemas semelhantes a UNIX terão rsync instalado, mas geralmente não unison . Mas em uma distribuição Linux você provavelmente pode encontrá-lo em seu gerenciador de pacotes.

    
por 25.09.2014 / 05:30
1

Para o mais simples dos casos pode-se fazer ineficientemente

$ rsync -au A B; rsync -au B A

para obter o arquivo mais recente copiado para ambos os lados. Então é possível. Mas não recomendado.

    
por 19.02.2017 / 07:06