Проблемы с согласованием версий протокола rsync

Проблемы с согласованием версий протокола rsync

Я пытаюсь выполнить rsync между Linux-устройством и MacOS-устройством.

MacOS (yosemite) похоже поставляется со старой версией rsync, поэтому я обновил ее с помощью homebrew. Хорошо, у меня, похоже, идеально совпадающие версии:

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

Если он «извлекает» данные из коробки MacOS (т.е. место назначения локальное, а источник удаленный), то это работает:

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

Но если он отправляет данные с исходного блока (Linux) на Mac, то тут возникает небольшая проблема — несоответствие протоколов.

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

Симптомом этого является то, что поскольку мы согласовываем протокол наименьшего общего знаменателя 29, я не получаю поддержки, --iconvи любые имена файлов со странными символами искажаются.

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]

Я поискал что-нибудь вроде rsyncdkick, который мог бы работать на Mac, используя ps aux, ps -ef, но не смог найти.

Почему компьютер Mac выбирает старую версию протокола при удаленном подключении, и как мне заставить его использовать более новую версию rsync, которую я установил?

решение1

Я предполагаю, что самодельная версия rsync находится в /usr/local/bin вместо /usr/bin (как и должно быть), но при rsyncing с вашего Linux-бокса он выполняет /usr/bin/rsync как удаленный агент. Если проблема в этом, вы должны быть в состоянии исправить ее, добавив --rsync-path=/usr/local/bin/rsync(или какой фактический путь находится на стороне OS X).

Примечание: пожалуйста, не заменяйте версию rsync, поставляемую Apple, в каталоге /usr/bin — это безумие.

Связанный контент