test case, whole file cp-inplace over nfs ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time ( cp-inplace.py /tv/tmp.ts /d/tmp.ts ; sync ) # real 2m14.328s # user 0m0.020s # sys 0m9.965s dd over nfs ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time ( dd if=/tv/tmp.ts of=/d/tmp.ts ; sync ) # real 2m4.051s # user 0m2.160s # sys 0m19.825s cp over nfs ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time ( cp /tv/tmp.ts /d/tmp.ts ; sync ) # real 2m2.805s # user 0m0.076s # sys 0m7.136s scp ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time ( scp tv:/tv/tmp.ts /d/tmp.ts ; sync ) # real 2m4.298s # user 0m21.957s # sys 0m22.285s rsync rsync:// ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time ( rsync -a rsync://tv/tv/tmp.ts /d/tmp.ts ; sync ) # real 2m2.962s # user 0m6.940s # sys 0m15.509s rsync --inplace rsync:// ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time ( rsync -a --inplace rsync://tv/tv/tmp.ts /d/tmp.ts ; sync ) # real 2m2.846s # user 0m6.732s # sys 0m15.929s rsync --append rsync:// ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time ( rsync -a --append rsync://tv/tv/tmp.ts /d/tmp.ts ; sync ) # real 2m2.974s # user 0m7.048s # sys 0m15.833s test case, half file already copied cp-inplace over nfs ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm -f /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time dd if=/tv/tmp.ts of=/d/tmp.ts bs=1024 count=697080 ; \ time ( cp-inplace.py /tv/tmp.ts /d/tmp.ts ; sync ) # real 1m6.393s # user 0m0.020s # sys 0m5.104s dd over nfs ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm -f /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time dd if=/tv/tmp.ts of=/d/tmp.ts bs=1024 count=697080 ; \ time ( dd if=/tv/tmp.ts of=/d/tmp.ts bs=1024 skip=697080 seek=697080; sync ) # real 1m2.530s # user 0m0.508s # sys 0m6.600s cp over nfs # no support per man ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm -f /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time dd if=/tv/tmp.ts of=/d/tmp.ts bs=1024 count=697080 ; \ time ( cp /tv/tmp.ts /d/tmp.ts ; sync ) # real 2m3.256s # user 0m0.064s # sys 0m7.348s scp # no support per man ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm -f /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time dd if=/tv/tmp.ts of=/d/tmp.ts bs=1024 count=697080 ; \ time ( scp /tv/tmp.ts /d/tmp.ts ; sync ) # real 2m3.443s # user 0m0.032s # sys 0m7.420s rsync rsync:// ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm -f /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time dd if=/tv/tmp.ts of=/d/tmp.ts bs=1024 count=697080 ; \ time ( rsync --archive rsync://tv/tv/tmp.ts /d/tmp.ts ; sync ) # real 4m18.850s # user 0m8.801s # sys 0m13.289s rsync --inplace rsync:// ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm -f /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time dd if=/tv/tmp.ts of=/d/tmp.ts bs=1024 count=697080 ; \ time ( rsync --archive --inplace rsync://tv/tv/tmp.ts /d/tmp.ts ; sync ) # real 4m17.213s # user 0m8.513s # sys 0m9.849s rsync --append rsync:// ssh root@tv "sync ; echo 3 > /proc/sys/vm/drop_caches" ; \ rm -f /d/tmp.ts ; sync ; echo 3 > /proc/sys/vm/drop_caches ; \ time dd if=/tv/tmp.ts of=/d/tmp.ts bs=1024 count=697080 ; \ time ( rsync --archive --append rsync://tv/tv/tmp.ts /d/tmp.ts ; sync ) # real 1m28.632s # user 0m5.308s # sys 0m8.737s # the only rsync that didn't go slow on the net transfer, # but it did read the output file to checksum.