Problema ao negociar versões do protocolo rsync

1

Estou tentando rsync entre uma caixa do Linux e uma caixa do MacOS.

O MacOS (yosemite) parece vir com uma versão antiga do rsync, então eu atualizei isso usando o homebrew. OK, parece que tenho versões perfeitamente compatíveis:

wim@wim-imac:~$ rsync --version | head -n 1
rsync  version 3.1.1  protocol version 31
wim@wim-imac:~$ ssh wim@wim-dell
wim@wim-dell:~$ rsync --version | head -n 1
rsync  version 3.1.1  protocol version 31

Se estiver "puxando" da caixa MacOS (ou seja, o destino é local e a origem é remota), funciona:

wim@wim-imac:~$ rsync -nvvvv wim@wim-dell:/media/wim/wim_2tb/guitar /Volumes/wim2TB/guitar | grep Protocol
(Server) Protocol versions: remote=31, negotiated=31
(Client) Protocol versions: remote=31, negotiated=31

Mas se for empurrando da caixa de fontes (linux) para o mac, agora há um pequeno problema - há uma incompatibilidade de protocolo.

wim@wim-imac:~$ ssh wim@wim-dell
wim@wim-dell:~$ rsync -nvvvv /media/wim/wim_2tb/guitar wim@wim-imac:/Volumes/wim2TB/guitar | grep Protocol
(Server) Protocol versions: remote=31, negotiated=29
(Client) Protocol versions: remote=29, negotiated=29

Portanto, o sintoma disso é que desde que nós negociamos o protocolo de menor denominador comum 29, eu não recebo suporte para --iconv e qualquer nome de arquivo com personagens engraçados é errado.

wim@desk35:~$ rsync -nv --iconv=UTF-8,UTF8-MAC /media/wim/wim_2tb/guitar wim@wim-imac:/Volumes/wim2TB/guitar
rsync: on remote machine: --iconv=UTF8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

Procurei por qualquer tipo de rsyncd para chutar que pudesse estar em execução no Mac usando ps aux , ps -ef , mas não consegui encontrá-lo.

Por que a máquina do Mac seleciona a versão antiga do protocolo quando é contatada pelo remoto, e como posso fazer com que ela use a versão mais recente do rsync que eu instalei?

    
por wim 19.05.2015 / 14:09

1 resposta

1

Eu estou supondo que a versão homebrew do rsync está em / usr / local / bin em vez de / usr / bin (que é como deveria ser), mas quando rsyncing da sua caixa linux está executando / usr / bin / rsync como o agente remoto. Se esse é o problema, você deve ser capaz de consertar isso adicionando --rsync-path=/usr/local/bin/rsync (ou qualquer que seja o caminho real no lado do OS X).

Nota: por favor, não substitua a versão do rsync fornecida pela Apple no diretório / usr / bin - assim fica a loucura.

    
por 21.05.2015 / 07:43