次のコマンドを使用してリモートサーバーからrsyncプルを実行する場合:
/usr/bin/rsync -av -e ssh --delete --chmod=a+rwx,g+rwx,o-wx --dry-run username@server:/remote/path/ /home/dir/local/path
次のエラーが発生します。
receiving file list ... Invalid flist flag: 1004
rsync error: protocol incompatibility (code 2) at flist.c(2354) [Receiver=3.0.7]
リモートからローカルに逆(つまりプッシュ)を実行すると、次のようになります。
building file list ... Invalid flist flag: 1004
rsync error: protocol incompatibility (code 2) at flist.c(2354) [Receiver=3.0.7]
rsync: connection unexpectedly closed (8 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(468) [sender=2.6.8]
パラメータを1つずつ削除してみましたが、-aフラグに関連しているようです。
環境
# local machine
Linux lbox 2.6.32-21-generic #32-Ubuntu SMP Fri Apr 16 08:10:02 UTC 2010 i686 GNU/Linux
# rsync version
rsync version 3.0.7 protocol version 30
# remote machine
FreeBSD rbox 6.4-STABLE FreeBSD 6.4-STABLE #0: Mon Feb 22 01:05:13 EST 2010 UNIX-BSD
rsync version 2.6.8 protocol version 29
これは簡単に解決できますか?
興味深いことに、起点と終点のマシンの間に中間マシンを配置すると、目的の結果が得られます。
すなわち。
マシン1(発信元)>>マシン2(中間)>>マシン3(宛先)
machine 1: rsync version 2.6.8 protocol version 29
machine 2: rsync version 3.0.3 protocol version 30
machine 3: rsync version 3.0.7 protocol version 30
FreeBSDボックスには、古いプロトコルバージョンを使用する6年前のバージョンのrsyncがあります。 rsync
コマンドに--protocol=29
を追加することで、新しいバージョンのrsyncに古いプロトコルを使用させることができます。