Linux ボックスと MacOS ボックス間で rsync を試みています。
MacOS (yosemite) には古いバージョンの rsync が付属しているようなので、homebrew を使用して更新しました。OK、完全に一致するバージョンのようです:
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 上で実行されている可能性のある をキックするの種類を探しましたがps aux
、ps -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 バージョンを置き換えないでください。そうすると、混乱を招きます。