rsync --append behavior

Jacob Balazer rsync at
Sat May 19 16:18:47 GMT 2007

I am using rsync 2.6.9 in daemon mode under Cygwin, and having trouble
reconciling its --append behavior with that described in the man page:

The man page says that when you use --append, it will update a file by
appending, which presumes the existing data on the receiving side
matches.  But when I run rsync with append mode when the existing file
on the receiving side is shorter than on the sending side, the first
thing it does is (I think) is to read either most of or all of the
file on the remote sending end: on the local receiving end, it says
"recv_generator()" for each of the files, "generating and sending sums
for 1", and then "generate_files phase=1", and then no progress for
several minutes.  After that several minutes, apparently a
block-by-block comparison of the existing data starts.  This operation
seems to happen as fast as rsync can read the file from the local
disk. (i.e. it is not network limited)  But that takes quite a while
for a >10 GB file.  When this process starts, it says
"recv_files(filename)", "recv mapped filename of size 13050470128",
and then updating lines like this:
   369262592   2%   12.07MB/s    0:17:15

Eventually it finishes reading through the existing local file, and
starts appending new data.

I thought that when using --append, rsync will presume that existing
data matches, and just start appending more data, putting off file
data comparison until after the transfer is complete.

Also,  the man page says that in --append mode, only files that are
shorter on the receiving side are sent.  But I've found that files
that are the same length are sent also.

Here is the command I'm executing:
  rsync -rzvvv --inplace --append --progress --stats --timeout=7200 --port=2005
     remote-host::d-video-rsync/ /cygdrive/d/video

Incidentally, I am forced to use a very long time-out.  Otherwise I
experience a time-out error during the first long phase, when I see no
progress on the local receiving end, and the remote end is apparently
reading through the entire file.


More information about the rsync mailing list