[Eisfair] Fehlermeldung beim Einsatz von rsync - NEU

Marcus Roeckrath marcus.roeckrath at gmx.de
Mi Mär 13 08:30:15 CET 2019


Hallo Jürgen,

Marcus Roeckrath wrote:

> Werde auch nochmal Google befragen, bei welchen Fehlern diese Meldung
> getriggert wird.

Auf https://rsync.samba.org/issues.html finde ich folgendes, was ich mir mal
in Ruhe zu Gemüte führen muss.


Q: Why does my transfer die with something like the following error?

rsync: error writing 4 unbuffered bytes - exiting: Broken pipe
rsync error: error in rsync protocol data stream (code 12) at io.c(463)

or

rsync: connection unexpectedly closed (24 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(342)

A: This error tells you that the local rsync was trying to talk to the
remote rsync, but the connection to that rsync is now gone. The thing you
must figure out is why, and that can involve some investigative work.

If the remote rsync is a daemon, your first step should be to look at the
daemon's log file to see if it logged an error explaining why it aborted
the transfer. Also double-check to ensure that the log file is setup right,
as a wrong "log file" setting in your rsyncd.conf file can also cause this
problem.

Beginning with version 2.6.3, rsync now does a better job of retreiving the
error from the remote process than older versions of rsync, so you may wish
to try upgrading and see if you now get sent the error message from the
remote rsync.

There are several common causes for a remote rsync process going away:

    The destination disk is full (remember that you need at least the size
of the largest file that needs to be updated available in free disk space
for the transfer to succeed).
    An idle connection caused a router or remote-shell server to close the
connection.
    A network error caused the connection to be dropped.
    The remote rsync executable wasn't found.
    Your remote-shell setup isn't working right or isn't "clean" (i.e. it is
sending spurious text to rsync). 

If you think the problem might be an idle connection getting closed, you
might be able to work around the problem by using a --timeout option (newer
rsyncs send keep-alive messages during lulls). You can also configure ssh
to send keep-alive messages when using Protocol 2 (look for KeepAlive,
ServerAliveInterval, ClientAliveInterval, ServerAliveCountMax, and
ClientAliveCountMax). You can also avoid some lulls by switching from
--delete (aka --delete-before) to --del (aka --delete-during).

If you can't figure out why the failure happened, there are steps you can
take to debug the situation. One way is to create a shell script on the
remote system such as this one named "rsync-debug". You would use the
script like this:

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

This script enables core dumps and also logs all the OS system calls that
lead up to the failure to a file in the /tmp dir. You can use the resulting
files to help figure out why the remote rsync failed.

If you are rsyncing directly to an rsync daemon (without using a
remote-shell transport), the above script won't have any effect. Instead,
halt the current daemon and run a debug version with core-dumps enabled and
(if desired) using a system-call tracing utility such as strace, truss, or
tusc. For strace, you would do it like this (the -f option tells strace to
follow the child processes too):

ulimit -c unlimited
strace -f -t -s 1024 -o /tmp/rsync-$$.out rsync --daemon --no-detach

Then, use a separate window to actually run the failing transfer, after
which you can kill the debug rsync daemon (pressing Ctrl-C should do it).

If you are using rsync under inetd, I'd suggest temporarily disabling that
and using the above daemon approach to debug what is going on.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair