Here are some possible explanations:

1) you used --partial on an earlier attempt and interrupted the
   transfer. That would leave you with a partial and potentially much
   smaller image locally, which would mean a subsequent transfer would
   send most of the file

2) the corruption is spread throughout the file, for example crlf
   conversion. If the corruption occurs more often than the block size
   that rsync chooses (assuming you don't override the choice) then
   rsync will end up sending the whole file.

I suspect that (2) is the problem. To check this try dumping a piece
of the two files (perhaps with "od") and looking at what differs
between them. If it is a regular difference then you could use a
program to "fix" that difference as best you can, then use rsync to
fix up any still broken blocks.

If you are interested in approaching this problem from an academic
point of view then you might like to look in the subsection "Text
transformation" in chapter 4 of my thesis. That section looks at how
to efficiently handle this type of corruption. The current versions of
rsync don't use the method in that section.

Cheers, Tridge

Reply via email to