cvsup

Vincent Stemen vs1 at crel.us
Tue Jan 15 19:22:26 PST 2008


On 2008-01-15, Simon 'corecode' Schubert <corecode at fs.ei.tum.de> wrote:
>
> Yes.  There are a couple of mirrors which serve the cvs repo via rsync. 
> For instance use chlamydia.fs.ei.tum.de.  There are more, I guess.

Thanks.  

I just checked the list, but most of the sites say they only mirror
_Daily snapshots and official ISOs_.  The rsync link to the one you
mentioned, *chlamydia.fs.ei.tum.de*, does take you to a web page that
says they have the cvsup collections, but they do not provide the full
path to access them via rsync.

_TheShell.com_ is the only other one that lists *Code* under _Mirrored
Data_.  Their rsync link takes you to
rsync://rsync.theshell.com/pub/DragonFly but there are no instructions
on the full path to access the repository.  I can only guess
    rsync://rsync.theshell.com/pub/DragonFly/dragonfly-cvs-src
I will experiment with it.


>
>> Also, has anybody considered writing some front end scripts to rsync to emulate
>> the necessary features of cvsup?  I have found rsync to be very fast since it
>> efficiently only transfers what has changed.  I also do not see any reason for
>> the mirroring tool to need any knowledge of a specific repository type (e.g
>> cvs, svn, etc).  You are just mirroring files.
>
> Rsync is very slow when you tag a repo, because all the files change, but 
> only one line.  It's not really optimized for this task.  But this doesn't 
> happen very often, though.

That is interesting.  The rsync docs claim to be very fast and say this

    The rsync remote-update protocol allows rsync to transfer just the dif-
    ferences between two sets of files across the network connection, using an
    efficient  checksum-search  algorithm ...

I ran a test transfering 8 text files over the internet that are each about
450K and the performance seems pretty good when I changed just one line in each
file.  In my test I told rsync to use ssh, so the transfer was also encrypted.

Here are the results.

*Initial download*

$ time rsync --stats  --del --rsh="ssh $wh_ssh_args" -auv $whr:/var/tmp/test .
receiving file list ... done
test/
test/testfile1
test/testfile2
test/testfile3
test/testfile4
test/testfile5
test/testfile6
test/testfile7
test/testfile8

Number of files: 9
Number of files transferred: 8
Total file size: 3607368 bytes
Total transferred file size: 3607368 bytes
Literal data: 3607368 bytes
Matched data: 0 bytes
File list size: 168
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 202
Total bytes received: 3608346

sent 202 bytes  received 3608346 bytes  379847.16 bytes/sec
total size is 3607368  speedup is 1.00
rsync --stats --del --rsh="ssh $wh_ssh_args" -auv $whr:/var/tmp/test .  0.19s user 0.04s system 2% cpu 9.059 total
============

*After modifying each file*

$ time rsync --stats  --del --rsh="ssh $wh_ssh_args" -auv $whr:/var/tmp/test .
receiving file list ... done
test/
test/testfile1
test/testfile2
test/testfile3
test/testfile4
test/testfile5
test/testfile6
test/testfile7
test/testfile8

Number of files: 9
Number of files transferred: 8
Total file size: 3607376 bytes
Total transferred file size: 3607376 bytes
Literal data: 5608 bytes
Matched data: 3601768 bytes
File list size: 168
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 31162
Total bytes received: 26842

sent 31162 bytes  received 26842 bytes  23201.60 bytes/sec
total size is 3607376  speedup is 62.19
rsync --stats --del --rsh="ssh $wh_ssh_args" -auv $whr:/var/tmp/test .  0.08s user 0.02s system 6% cpu 1.469 total
============

As you can see, it took 9 seconds for a full download, but only less than 1.5
seconds to update them.  That seems reasonably fast to me.  Is cvsup really
faster than that?  I am sceptical that it could be much faster.







More information about the Users mailing list