zsync

An implementation of rsync over HTTP.
Download

zsync Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • Colin Phipps
  • Publisher web site:

zsync Tags


zsync Description

An implementation of rsync over HTTP. zsync is a file transfer program. zsync allows you to download a file from a remote server, where you have a copy of an older version of the file on your computer already. zsync downloads only the new parts of the file. It uses the same algorithm as rsync.However, where rsync is designed for synchronising data from one computer to another within an organisation, zsync is designed for file distribution, with one file on a server to be distributed to thousands of downloaders.zsync requires no special server software - just a web server to host the files - and imposes no extra load on the server, making it ideal for large scale file distribution.zsync is open source, distributed under version 2 of the Artistic License. Feedback, bugs reports and patches are welcome.zsync fills a gap in the technology available for large-scale file distribution. Three key points explain why zsync provides a genuinely new technique for file distribution:* Client-side rsync - zsync uses the rsync algorithm, but runs it on the client side, thus avoiding the high server load associated with rsync.* Rsync over HTTP - zsync provides transfers that are nearly as efficient as rsync -z or cvsup, without the need to run a special server application. All that is needed is an HTTP/1.1-compliant web server. So it works through firewalls and on shared hosting accounts, and gives less security worries.* Handling for compressed files - rsync is ineffective on compressed files, unless they are compressed with a patched version of gzip. zsync has special handling for gzipped files, which enables update transfers of files which are distributed in compressed form.The special handling of compressed files is, as far as I know, entirely new and unique to zsync. The combination of client-side rsync and HTTP is also unique to zsync, to the best of my knowledge.zsync is only useful if people offer zsync downloads. I have made a deliberate effort to make zsync simple and reliable in use, and easy to deploy.* Single meta-file - zsync downloads are offered by building a .zsync file, which contains the meta-data needed by zsync. This file contains the precalculated checksums for the rsync algorithm; it is generated on the server, once, and is then used by any number of downloaders.* Easy file format - .zsync files have a simple text header, so they can be edited with any good editor to change details like the download URL.* Flexible use - The .zsync contains either a relative URL to the full content of the file, so you can either generate and offer it on the same server as hosts the full download (and so it can be distributed like any other file onto mirror sites). Or it can contains one or more absolute URLs (the client will try multiple URLs if necessary to find the content), meaning the .zsync can be hosted on a different server entirely; in fact, the .zsync can be generated and offered by a third party, while still leaving most of the download to the original distribution site.Because zsync is a file distribution method, it is useful only when people offer .zsyncs for downloads. It's a little hard to demonstrate the program and build up a user base because of this. So I am suggesting a number of uses for zsync on the client page; these include some zsync downloads that I am offering downloads myself to give some immediate use to the program.If you are a server operator looking to use zsync for file distribution, see the server page, which gives some guidance on how to create and offer .zsync files. What's New in This Release: This fixes a few bugs that have been spotted in the previous version, plus a few minor feature changes: · recompression support for gzip files made with zlib:gzio.c or gzip -n · fix compilation on MacOS X · allow HTTP redirects on the target file; not sure whether this is a good idea or not... · fix unecessary transfer of whole file where file is smaller than the context size (1x or 2x blocksize) · use sequential_matches=1 when there is only one block; otherwise we're forced to transfer the whole file for files below 2kiB · fix librcksum handling of zsync streams with sequential_matches == 1; it was giving false negatives when applying the rsync algorithm, resulting in poor use of local source data when sequential_matches == 1 (which didn't actually occur in any recent version of zsync)


zsync Related Software