Patent ID: 8706695

Claim:
A computer-implemented method comprising: storing, by one or more programmed computing systems, a plurality of files on one or more storage devices; generating, by the one or more programmed computing systems, a tail hash value for each of the stored plurality of files based on a stored final sequence of data of the stored file that is of a predetermined length; and storing, by the one or more programmed computing systems, a new first file on the one or more storage devices that is distinct from the plurality of files by: generating a first tail hash value for the first file based on a final sequence of data for the first file of the predetermined length; matching the first tail hash value to one of the plurality of tail hash values for a second file of the plurality of files; determining a first extended sequence of data of the first file that is identical to a stored second extended sequence of data of the second file, the first extended sequence of data including the final sequence of data for the first file and including an additional adjacent data sequence of the first file, and the second extended sequence of data including the stored final sequence of data for the second file and including an additional adjacent data sequence adjacent of the second file; storing an initial subset of the first file on the one or more storage devices, the initial subset not including the first extended sequence of data of the first file; and storing a reference for the first file that is associated with the stored initial subset and with the stored second extended sequence of data of the second file, the storing of the reference being performed instead of storing the first extended sequence of data of the first file and enabling the stored first file to later be retrieved using in part the stored second extended sequence of data of the second file.