Probleme beim Aushandeln von Rsync-Protokollversionen

Probleme beim Aushandeln von Rsync-Protokollversionen

Ich versuche, zwischen einer Linux-Box und einer MacOS-Box eine rsync-Verbindung herzustellen.

Das MacOS (Yosemite) scheint mit einer alten Version von rsync zu kommen, also habe ich diese mit Homebrew aktualisiert. OK, ich scheine perfekt passende Versionen zu haben:

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

Wenn es von der MacOS-Box „zieht“ (d. h. das Ziel ist lokal und die Quelle remote), funktioniert es:

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

Beim Pushen von der Quellbox (Linux) auf den Mac gibt es jedoch ein kleines Problem: Es liegt eine Protokollfehlanpassung vor.

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

Das Symptom hierfür ist, dass ich keine Unterstützung mehr für das Protokoll 29 mit dem kleinsten gemeinsamen Nenner bekomme, seit wir es ausgehandelt haben, --iconvund alle Dateinamen mit komischen Zeichen durcheinander geraten.

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]

Ich habe nach irgendeiner Art von rsyncdKick gesucht, der möglicherweise mit , auf dem Mac läuft ps aux, ps -efkonnte ihn aber nicht finden.

Warum wählt der Mac-Computer bei einer Remote-Verbindung die alte Protokollversion aus und wie kann ich ihn dazu bringen, die neuere Version von rsync zu verwenden, die ich installiert habe?

Antwort1

Ich vermute, dass sich die Homebrew-Version von rsync in /usr/local/bin befindet und nicht in /usr/bin (was auch so sein sollte), aber beim Rsyncing von Ihrem Linux-Rechner aus wird /usr/bin/rsync als Remote-Agent ausgeführt. Wenn das das Problem ist, sollten Sie es beheben können, indem Sie hinzufügen --rsync-path=/usr/local/bin/rsync(oder was auch immer der tatsächliche Pfad auf der OS X-Seite ist).

Hinweis: Bitte ersetzen Sie nicht die von Apple bereitgestellte Version von rsync im Verzeichnis /usr/bin – das führt in den Wahnsinn.

verwandte Informationen