Problems with rsync on high-loss networks
Daniel Santos
daniel.santos at pobox.com
Sat Dec 28 18:34:11 UTC 2019
Hello all,
I'm using rsync over a fairly expensive satellite network that has
intermittent connectivity and a lot of packet loss. I'm getting a lot
of corrupted file names, which is making me wonder if this is just the
one in 64k-odd packets that are corrupted with a matching TCP checksum
or if there's something else going on.
My server is using 3.1.2-2.1ubuntu1_amd64 (it's an old version of
Ubuntu, so I hack-upgraded it) run from xinetd and the clients are using
3.1.2 from Cygwin.
For example, in one case a file is expected to have a name similar to:
SH02491_20191021203744-20191021211456_1WJ1170GTKL003151.hpr
but I find:
170GTKL003151.hpr^G?~]<F3>^G<D0><F0><A4><C2>56> ^Q,6000000-20191116
In another case, this should have no subdirectories, but I find this
(with ls -alFb)
-rw-rw-rw- 1 nobody users 211346 Aug 4 18:05 3074777997.hpr
-rw-rw-rw- 1 nobody users 255851 Aug 4 19:05 3074777998.hpr
-rw-rw-rw- 1 nobody users 276949 Aug 4 20:05 3074777999.hpr
-rw-rw-rw- 1 nobody users 242214 May 30 2019 307477799.hpr
-rw-rw-rw- 1 nobody users 102301 May 23 2019 30747779.hpr
-rw-rw-rw- 1 nobody users 66197 May 22 2019 3074777.hpr
drwx------ 2 nobody users 4096 Dec 23 13:44 3.mom/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t0.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t1.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t2.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t3.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t4.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t5.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t6.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t7.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t\0057.hpr\004\356\210]\036\2066\360h,F\ \>\ \t\0058.hpr\004#,]\260\2306\360T\=pr\002\255+]\264\3306\354\020L4\>\ \t\0058.hpr\001[\353]2.7\360\264ut%\>\ \t\0059.hpr\004ݯ]D<7\360X/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t\0057.hpr\004\356\210]\036\2066\360h,F\ \>\ \t\0058.hpr\004#,]\260\2306\360T\=pr\002\255+]\264\3306\354\020L4\>\ \t\t\0059.hpr\003\334t]\261\3377\360\254ˈ\035\>\ \b\0057.hpr\004\305X\\/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 80.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 81.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 82.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 83.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 84.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 85.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 86.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 87.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 88.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ 89.hpr/
drwx------ 2 nobody users 4096 Dec 22 07:51 6\360\004[Q\030\>\ \t8.hpr/
I haven't dug deeply into the rsync sources, but I have a few questions
or suggestions
1. Does each logical transaction between rsync server and client employ
any integrity guarantees beyond the TCP checksum?
2. Can the file list be xferred as a regular /tmp file? (I'm guessing
the file would have to include file times, sizes, permissions, acls,
attrs, etc.)
3. Is there any option (that I've missed) to give rsync the hint that
we're in the 1980s with a dial-up-like connection and we need more
to eat more CPU (for compression and such) to save bandwidth?
4. Is the file list compressed when using -z? In our case, this would
help a LOT.
5. I don't suppose there's an option to specify the compression
mechanism or level is there?
6. When using -z and if files are similar enough, would it be possible
to reuse the dictionary from a previously compressed file to send
less data over the wire?
I have recently added "max verbosity = 3" to /etc/rsyncd.conf and
"--verbose" to the arguments when launched from xinetd and I'm getting a
dump of all the recv_file_name() calls now, but I haven't seen a
corrupted file name in the log yet.
Thanks
Daniel
More information about the rsync
mailing list