1. A method for updating a local file on a client, the local client comprising a general purpose computer system, the method comprising: requesting a list of new hash values corresponding to blocks of an update file, the update file being located on the server computer and having at least one segment of data in common with the local file, wherein the update file is logically divided into a plurality of blocks, the blocks having divisions that are located according to an algorithm, the algorithm locating the divisions between the blocks at positions within a target file when a value of a rolling checksum reaches a particular value, the blocks being of variable size; comparing the new hash values to local hash values, the local hash values each corresponding to a block of data in the local file, divisions between the blocks of data in the local file being defined according to the algorithm; for each of the new hash values not having a matching local hash value, downloading a corresponding one of the blocks of data from the server computer and writing the corresponding block to a new file; for each of the new hash values having a matching local hash value, copying the corresponding block to the new file; whereby the requesting, comparing, downloading, and copying are all performed by software executing on the client, and when each of the blocks corresponding to the new hash values are written to the new file, a replica of the update file is created on the client.