Why does't rsync use delta-transfer for local files?
According to the manpage, psusi is right:
-W, --whole-file: The transfer may be faster if this option is used when the bandwidth between the source and destination machines is higher than the bandwidth to disk (especially when the "disk" is actually a networked filesystem). This is the default when both the source and destination are specified as local paths, but only if no batch-writing option is in effect.
The straight-forward answer to this question is:
Use the --no-W
flag to force delta compression, no matter local or remote.
Update: It looks like there is more to the story. The delta compression
seems to be enabled only between receive and transmit process of rsync. When outputting the file to the file-system, rsync
may still write out the whole file(s), even with delta compression on.
See "Wakan Tanka's" investigation here.
Update 2: The --inplace
option writes only the changed parts of the file. However note that it conflicts with --sparse
and is not recommended, by the manual, when the destination file is being used.
By default, rsync first creates a new copy of the target file and then replaces it, for various safety reasons. You can override this by specifying --inplace
along with --no-whole-file
. This tells rsync to do an in-place-edit of the target file, accepting the various risks (typically minor for this situation) as documented in the man page.