We use rsync to synchronize files up to a remote host, intending to clear
files from the client filesystem once the rsync transfer succeeds. The
connection has limited bandwidth (< 1 mbps) and is intermittent (often
active only for about 10 minutes at a time, potentially hours between
connections), due to connectivity via satellite. The files being
transferred are 100-200 megabytes. Since we may have several files queued,
the transfers take time and often require several windows of connectivity
to complete. We use the following cli flags for this: `--verbose --progress
--exclude=".*" --timeout=15 --partial-dir=.partial --partial --recursive
--remove-source-files`.

I observe that sometimes the transfer of file1 completes successfully, and
then the process moves to file2. However, even after transferring file2 for
several minutes, file1 remains on the client's filesystem.

I've been looking a bit at the rsync code, and I think I have determined
that it prioritizes transferring buffered file data over sending control
messages (such as the MSG_SUCCESS message that would result in the client
side file being deleted). So my suspicion is that it's loading the data
buffer with data from file2 and trying to transfer that data. Consequently,
the MSG_SUCCESS message is never prioritized as rsync is killed (due to end
of network connection) before it can make it through, even though file1 was
successfully transferred several minutes earlier.

Does this sound right? Are there any outstanding bugs or feature requests
that might improve this situation (I searched and couldn't find any)? It
seems sensible to prioritize sending MSG_SUCCESS over file data so that
this workflow works more reliably. Would that make sense?
-- 
Please use reply-all for most replies to avoid omitting the mailing list.
To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html

Reply via email to