知ってて当たり前の超凡ミス。
起こったこと:rsyncが失敗する
rsyncが何故か失敗してしまう。"protocol incompatibility"と出ていますが、--protocol
オプションを指定しても、最新版のrsyncをインストールしても、同じエラーが出ます。なぜでしょう?
Tue Nov 4 12:15:46 2014 Normal: recursive startup rsync: /home/xxxxxxx/Documents/src/xxxxxxx/ -> vagrant@deva:xxxxxxx/ excluding /cucumber/vendor /cucumber/.bundle ~/.bashrc loaded protocol version mismatch -- is your shell clean? (see the rsync man page for an explanation) rsync error: protocol incompatibility (code 2) at compat.c(174) [sender=3.1.0] Tue Nov 4 12:15:47 2014 Error: Failure on startup of "/xxxxxxxxx".
原因:~/.bashrcでechoしている
上のログに "~/.bashrc loaded" という行があります。これが原因です。.bashrc*1の最後の行で"echo"していました。もちろん、echo以外でも、何かしらの出力をしてしまうとscpやrsyncはコケます。
# ~/.bashrcの最後の行 echo "~/.bashrc loaded"
これと同じ問題です。
bash - SCP doesn't work when echo in .bashrc? - Stack Overflow
How the SCP protocol works (Jan Pechanec's weblog)によると、 scpは初めにリモート側にプロトコルを問い合わせるのですが、~/.bashrcが何かを出力するとそれが混乱してしまうようです。多分rsyncも同様なのでしょう。
回避策:Greetingは標準エラー出力に出す
echo "~/.bashrc loaded" >&2