rsync -vvvは明確な説明なしにOS Xで停止しました。

rsync -vvvは明確な説明なしにOS Xで停止しました。

突然(いつ問題が始まったかわからない)、そのrsyncコンピュータのコマンドが中断されました。

$ (dd bs=1024 count=1024 </dev/urandom >/tmp/temp_file && rsync -arvvv --progress /tmp/temp_file -e ssh hostname.sldc.company.net:/tmp/)
1024+0 records in
1024+0 records out
1048576 bytes transferred in 0.087832 secs (11938431 bytes/sec)
opening connection using: ssh hostname.sldc.company.net rsync --server -vvvlogDtpre.iLsfx . /tmp/  (7 args)

私も同じ問題がありますいいえ -e ssh同じものを返す精密バグ(ssh予期しない部分を含む)

$ (dd bs=1024 count=1024 </dev/urandom >/tmp/temp_file && rsync -arvvv --progress /tmp/temp_file analytics04.sldc.dataxu.net:/tmp/)
1024+0 records in
1024+0 records out
1048576 bytes transferred in 0.086265 secs (12155310 bytes/sec)
opening connection using: ssh hostname.sldc.company.net rsync --server -vvvlogDtpre.iLsfx . /tmp/  (7 args)

ノート:私たちの会社にはこのような問題がある人は誰もいませんが、私はそうです。いいえ他の機械にもこの問題がありますまたはローカルコンピュータとは異なるユーザー名を使用してください。ssh問題なく機械に入ることもできます。

問題を診断するにはどうすればよいですか?

プラットフォームとバージョン:

これはすべてOS X Yosemiteで行われます。

$ uname -a
Darwin my_machine.net 14.3.0 Darwin Kernel Version 14.3.0: Mon Mar 23 11:59:05 PDT 2015; root:xnu-2782.20.48~5/RELEASE_X86_64 x86_64

そして:

$ rsync --version
rsync  version 3.1.1  protocol version 31
Copyright (C) 1996-2014 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, no prealloc, file-flags

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

それを利用して設置しましたbrewrsyncOS Xに付属のバージョンでも同じ問題があります。

$ rsync --version
rsync  version 2.6.9  protocol version 29
Copyright (C) 1996-2006 by Andrew Tridgell, Wayne Davison, and others.
<http://rsync.samba.org/>
Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles,
              inplace, IPv6, 64-bit system inums, 64-bit internal inums

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

DTraceコマンド:

この点以下を実行して得られた最初の部分を示します。

sudo dtruss rsync -arvvv temp_file [email protected]:/tmp/

次に、上の箇条書きの最後の行の直後にパスワードの入力を求められます。

[email protected]'s password:
select(0x6, 0x7FFF50052860, 0x0, 0x7FFF500527E0, 0x7FFF500528F8)                 = 0 0
select(0x6, 0x7FFF50052860, 0x0, 0x7FFF500527E0, 0x7FFF500528F8)                 = 0 0
select(0x6, 0x7FFF50052860, 0x0, 0x7FFF500527E0, 0x7FFF500528F8)                 = 0 0
select(0x6, 0x7FFF50052860, 0x0, 0x7FFF500527E0, 0x7FFF500528F8)                 = 0 0

(60秒ごとに上記の最後の行と同じ新しい行が印刷されます)

ベストアンサー1

アイドル接続を閉じることが問題であると思われる場合は、オプションを使用して問題を解決できます--timeout(最新のrsyncは停止中に接続を維持するメッセージを送信します)。プロトコル2を使用している場合は、接続保持メッセージを送信するようにSSHを構成することもできます(KeepAlive、ServerAliveInterval、ClientAliveInterval、ServerAliveCountMax、およびClientAliveCountMaxの検索)。 --delete(別名 --delete-before) を --del(別名 --delete-during) に切り替えることで、いくつかの問題を回避できます。

エラーが発生した理由を特定できない場合は、状況をデバッグするために取ることができる手順があります。 1つの方法は、次のようにリモートシステムにシェルスクリプトを作成することです。

#!/bin/sh

ulimit -c unlimited

# Some systems have "truss" or "tusc" instead of "strace".
# The -f option tells strace to follow children too.
# The -t option asks for timestamps.
# The -s 1024 option increases the string decoding limit per function call.
# The -o option tells strace where to send its output.
strace -f -t -s 1024 -o /tmp/rsync-$$.out rsync "${@}"

次のスクリプトを使用します。

rsync -av --rsync-path=/some/path/rsync-debug HOST:SOURCE DEST
rsync -av --rsync-path=/some/path/rsync-debug SOURCE HOST:DEST

このスクリプトは、コアダンプを有効にし、エラーを引き起こすすべてのオペレーティングシステム呼び出しを/ tmpディレクトリのファイルに書き込みます。生成されたファイルを使用すると、リモートrsyncが失敗した理由を見つけるのに役立ちます。

おすすめ記事