rsync 프로토콜 버전 협상 문제

rsync 프로토콜 버전 협상 문제

Linux 상자와 MacOS 상자 간에 rsync를 시도하고 있습니다.

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]

, rsyncd를 사용하여 Mac에서 실행될 수 있는 모든 종류의 kick을 찾았 지만 찾을 수 없습니다. ps auxps -ef

Mac 컴퓨터가 원격으로 접속할 때 이전 프로토콜 버전을 선택하는 이유는 무엇이며, 내가 설치한 최신 버전의 rsync를 사용하도록 하려면 어떻게 해야 합니까?

답변1

나는 rsync의 자체 제작 버전이 /usr/bin 대신 /usr/local/bin에 있다고 추측합니다(그렇게 되어야 합니다). 그러나 Linux 상자에서 rsync를 수행할 때 /usr/bin/rsync를 원격 에이전트. 그것이 문제라면 추가 --rsync-path=/usr/local/bin/rsync(또는 OS X 측의 실제 경로가 무엇이든)하여 문제를 해결할 수 있어야 합니다.

참고: /usr/bin 디렉토리에 있는 Apple 제공 rsync 버전을 교체하지 마십시오. 그렇게 하면 미친 짓이 됩니다.

관련 정보