Rsync from CIFS mounted Windows shares is slow. Why is this? Are there alternatives for file copy with checksum support

cifsrobocopyrsync

I have found that using Rsync to transfer files from CIFS mounted shares resident on a Widnows client is extremly slow.

I have read a few threads here on SF, and several other forum posts on the web, that point to the issue being related to rsync verifying the data to be transferred. Is anyone able to explain this to me?

Also, if this isn't going to work at the speeds I would like, what are my options if I want support for checksumming to ensure data integrity?

Currently when rsyncing files from a CIFS mounted share to a physically connected drive I net ~25 MB/s over a Gigabit LAN. Conversely, when using Robocopy on the Windows client I realize transfer speeds of ~85 MB/s which is approaching the practical cap of the 5,900 RPM drive. Why such a signifcant difference?

Best Answer

Rsync, for convenience, supports a mode where both files are local. This is the mode you are getting, because Rsync is not talking to a remote machine using the rsync protocol. None of rsync's optimizations are possible in this mode, because there is no program on the remote side to perform the optimized operations.

Rsync, in local mode, will not make any attempt to send only differences, because it has no way to tell what the differences are. It defaults to a standard copy, followed by a standard read to verify the data. If you want checksumming to verify data integrity, you need some software on the other end to do the checksumming locally. You could use an rsync server for this purpose, since you're using rsync anyway.

Related Topic