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.

그걸 이용해서 설치했어요 brew. rsyncOS 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)로 전환하여 약간의 문제를 피할 수도 있습니다.

오류가 발생한 이유를 파악할 수 없는 경우 상황을 디버깅하기 위해 취할 수 있는 단계가 있습니다. 한 가지 방법은 다음과 같이 원격 시스템에 쉘 스크립트를 작성하는 것입니다.

#!/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가 실패한 이유를 찾는 데 도움이 될 수 있습니다.

관련 정보