sshを介したRsyncは、毎回うまく機能します。
ただし、sftpログインのみを許可し、sshログインは許可しないホストにrsyncを試みると、次のエラーが発生します。
rsync -av / source ssh user @ remotehost:/ target /
プロトコルバージョンの不一致-シェルはきれいですか?(説明については、rsyncのマニュアルページを参照)rsyncエラー:compat.c(171)[sender = 3.0.6]でのプロトコルの非互換性(コード2)
rsyncのmanページの関連セクションは次のとおりです。
通常、このメッセージは、rsyncがトランスポートに使用しているストリームに不要なゴミを生成する起動スクリプトまたはリモートシェル機能によって発生します。この問題を診断する方法は、次のようにリモートシェルを実行することです。
ssh remotehost /bin/true > out.dat
次に、out.datを見てください。すべてが正常に機能している場合、out.datは長さゼロのファイルである必要があります。rsyncから上記のエラーを受け取っている場合、おそらくout.datにテキストまたはデータが含まれていることがわかります。内容を見て、何を作っているのかを考えてみてください。最も一般的な原因は、非対話型ログインの出力ステートメントを含むシェルスタートアップスクリプト(.cshrcや.profileなど)が正しく構成されていないことです。
私のシステムでこれを試してみると、out.datで以下が生成されました。
ssh-dummy-shell:コマンドは許可されていません。
思ったように、ホストはsshログインを許可していません。
次のリンクは、sshfsでfuseを使用してこのタスクを実行できることを示していますが、非常に低速であり、実稼働での使用には適していません。
rsync sftpが動作する可能性はありますか?