Work out rsync transfer time instantly with clear inputs, formula shown and shareable results.
rsync pays a per-file cost for stat, checksum comparison and protocol exchange, which dominates when transferring many small files. 800,000 files at 1.5 ms each is twenty minutes of pure overhead regardless of bandwidth, which is why streaming a tar over ssh is often far faster for a first full copy than rsync file by file.
rsync duration
data time = size bits / link rate; overhead = files x per-file cost; total = data time + overhead
For an initial bulk copy of millions of small files. Streaming tar or a filesystem-level send avoids the per-file negotiation entirely; rsync excels at subsequent incremental syncs.
Run several rsync processes over different subdirectories in parallel, and avoid --checksum which reads every byte on both ends.