Conflito de várias versões do rsync

1

O RSYNC falha apenas quando tento sincronizar atributos estendidos (Mac OS X) com o seguinte erro.

rsync error: protocol incompatibility (code 2) at io.c(599) [sender=3.1.0]
rsync: [receiver] write error: Broken pipe (32)

Tanto quanto eu sei, o rsync requer que o servidor de destino também tenha o rsync instalado. Eu acho que esse problema está acontecendo porque eu emito este comando com uma versão recente (3.1) enquanto o servidor remoto é um Mac com duas versões, o padrão do sistema é 2.6.9.

Como posso ter certeza de que meu comando rsync usa a versão remota correta do rsync?

    
por SystematicFrank 26.11.2013 / 11:26

1 resposta

1

Primeiro, alguns antecedentes: a versão 2 do protocolo rsync não suporta metadados de arquivos estendidos. A Apple adicionou uma espécie de invasão à sua versão do rsync, que envia metadados estendidos como pseudo-arquivos no formato AppleDouble - ou seja, para arquivo.txt ele sincronizava o conteúdo do arquivo como "arquivo.txt" e seus metadados como pseudo- arquivo "._file.txt". A versão 3 do protocolo rsync adicionou suporte nativo para metadados estendidos, mas é claro que isso é completamente incompatível com a versão 2.

Felizmente, a solução é simples, desde que você saiba onde uma versão compatível do rsync está instalada no computador remoto: use a opção --rsync-path= para especificar onde encontrar o controle remoto compatível. Por exemplo, se a versão 3 do rsync estiver instalada em / usr / local / bin / rsync3 nos computadores local e remoto, você usaria algo como:

/usr/local/bin/rsync3 -aNHX --fileflags --rsync-path=/usr/local/bin/rsync3 -e ssh ...etc...
    
por 26.11.2013 / 20:29

Tags