SpeedSync® is patented delta-based fast data transfer algorithm that dramatically reduces the transfer times of modified digital information. It accomplishes this by only sending the portions of the data that have changed.
How SpeedSync Works
The SpeedSync engine analyzes both the source and destination file or data store to determine and transfer only the differences between them. The primary mechanism for determining the differences is to generate "keys" or signatures on blocks of data on one file or data store and compare them to blocks on the other.
In general, the keys are calculated on one "remote" file or data store and transferred to the SpeedSync engine. The engine then generates a key on a block of the "local" file or data store and compares it to the keys from the "remote" file. If the keys match then the data in that block is already in both locations.
If keys don’t match then the data within the block has changed. The updated data for that block is analyzed to determine which bytes have changed. To isolate only the changed bytes within the block, the algorithm performs a process of "shifting" the local data used to calculate the key and then re-calculating the key. Each new key is then compared against the "remote" keys. If the keys do not match, the data used is shifted again, the local key recalculated and then compared again against the remote keys. This process is performed until there is a match on the keys again. When the keys match, this defines the end of the data difference.
Based on the direction of the transfer, the differences are either sent or requested from the remote side. For instance:
- For a download (Get), the SpeedSync engine requests keys for the remote file or data, does
local SpeedSync processing to determine differences in the files, and then "gets" the portions
of the remote file or data store that are different.
- For an upload (Put), the SpeedSync engine also requests keys for the remote file or data, does local SpeedSync processing to determine differences in the files, and then "puts" the portions of the remote file or data store that are different.

