ssh上のrsync「プロトコルデータストリームのエラー」(コード12)。sshワークス


50

私は試した:

rsync -v -v -e 'ssh -p YY' ./testfile me@XXXXX:/home

エラーメッセージ

opening connection using: ssh -p YY -l me 146.6.84.206 rsync ->-server -vvve.s . /home 
[sender] make_file(testfile,*,0)
send_file_list done
send_files starting
server_recv(2) starting pid=17537
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600)[sender=3.0.6]
_exit_cleanup(code=12, file=io.c, line=600): about to call exit(12)

これはうまくいきます:

ssh -p YY me@XXXXX

これは、問題がsshd実行されていないか、ポートYYがファイアウォールで保護されていないことを示唆しています。とにかくチェックしました。

他にどんな問題があるのでしょうか?

編集:問題は「自己解決」であったようです。翌日は複製できませんでした。ローカルコンピューターを起動しました。おそらく、私は前回とは異なるIPアドレスを持っていました。そして今、rsyncは魔法のように動作します。私はそれが消えることを考慮してそれがどうであったかについての推測に感謝します。


1
/homeリモートサーバーの書き込み権限がありますか?
souravc

承知しました。私がsshするとき、私は猫とタッチなどをし始めることができます。私は物事をローカルに移動するためにリモートサーバー上でrsyncを呼び出すことについて話している。元のフォルダーと宛先フォルダーの両方に書き込み権限が必要です
-user3391229

私は時々このエラーを受け取りました(私のPelicanブログを私のサーバーにrsyncしようとしているとき)。サーバーにsshしてからrsyncを再試行すると、正常に動作することがわかりました。間に何が起こるかわからない。
アンソニーC

リモートサーバーに十分なスペースがない場合も、このエラーが発生する可能性があります。
マカン

回答:


84

存在しないリモートパスを指定した場合にも、このエラーが発生する可能性があります。

OS Xでこのエラーが発生しました:

$ rsync -avz public/ static:apps/myapp.com
building file list ... done
rsync: connection unexpectedly closed (8 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-47/rsync/io.c(453) [sender=2.6.9]

目的地のパスを間違えるだけの問題でした。appsdirが存在しませんでした。static:sites/myapp.com代わりにそれを変更すると(sitesdir 存在していました)、エラーはなくなりました。

パス内の最後のディレクトリが存在しなくても構いません(できますstatic:sites/mynewapp.com)が、先行するディレクトリは既に存在している必要があります。


この質問をするのをほとんど忘れていました。それ以来、私は同じ問題を抱えていません。これが起こったのではないかと思う。
user3391229

18
ありがとうございました!これは、これまでで最も誤解を招くエラーメッセージでなければなりません。
フランス

1
また、rsync実行可能ファイルがない場合も、同様のエラーが表示されます。主に私はansiblesで見てきた
mannoj

何らかの理由で、rsyncが存在しない場合はディレクトリを作成すると思っていました...私はそうではないと思います-最初に宛先ディレクトリを作成する必要があります。宛先パスがスラッシュで終わる場合、ディレクトリが存在する必要があります。スラッシュで終わらない場合は、その1つ上のレベルが存在する必要があります。
squarecandy

1
私の問題は、リモートディスクがいっぱいです。
チャンバズ

15

rsyncターゲットホストにインストールされていないときにこのエラーが発生しました。私の場合のエラーメッセージも言ったrsync: command not found。シンプルな

sudo apt-get install rsync

ターゲットホストで問題を解決しました。


コード12エラーが発生し、rsyncコマンドが見つからないというメッセージは表示されませんでした。インストールすると、エラーはなくなりました。
Hbar

3

リモートエンドのログインスクリプトはstdoutでゴミを生成しますか?これで確認してください

ssh -p YY me@XXXXX /bin/true > out.txt

out.txtデータが含まれている場合は、.profileまたはで問題のあるステートメントを特定し、.bashrcそれらをラップします

if [ ! -t 1 ]; then
  echo garbage
fi

out.txtのN。しかし、私は問題を再現できなかった期間にその午後にそれを試みました。
-user3391229

私は問題を生成できるときにこれを試しましたが、out.txtにも何も入っていませんでした。
joshreesjones

1

sshバイナリへのフルパスを入力する必要がある場合があります。

rsync -v -v -e '/usr/bin/ssh -p YY' ./testfile me@XXXXX:/home

他にも考えられる原因がありますが。


ええ、参照できるsshのインスタンスが複数ある場合に起こる可能性があります。ただし、翌日に消えたという事実により、これは起こりそうにありません
-user3391229

0

このエラーは、リモートシステムでのrsyncへのパスが、ローカルシステムが想定しているものと異なる場合にも発生する可能性があります。-vv(またはさらにvs)を指定すると、何が起こっているかを確認できます。これが問題になる場合は、-rsync-pathオプションを使用してrsyncへのリモートパスを指定できます。


0

私はこのエラーを見ていました:

rsync -e 'ssh -v'

debug1: Exit status 11

...

rsync error: error in rsync protocol data stream (code 12) at /BuildRoot
/Library/Caches/com.apple.xbs/Sources/rsync/rsync-51/rsync/io.c(453)
[sender=2.6.9]

リモートホストにsshできて、ディスクスペースが不足していることがわかりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.