Cross-file differential content synchronization
First Claim
1. A method for synchronizing a target file located on a server between the server and a client by generating the target file on the client, comprising:
- conveying a patch for generating the target file on the client to the client from the server, the patch comprising a plurality of segments, each segment corresponding to one of a plurality of portions of the target file, wherein the entire target file is divided among the plurality of portions of the target file, each segment containing either data content of the corresponding portion or a reference to the data content of the corresponding portion, the reference comprising information for locating the referenced data content in files stored on the client without including the referenced data content;
conveying a manifest to the client, the manifest comprising a list that identifies the files referred to in segments of the patch containing references to the data content, for enabling the client to verify that the files referred to in the segments of the patch containing the references to the data content are available on the client;
generating the target file on the client byretrieving the data content of portions of the target file from segments of the patch containing the data content of the corresponding portions; and
retrieving the data content of portions of the target file for which the reference to the data content of the corresponding portion is provided in the patch from the corresponding referenced files on the client.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods, systems and techniques for synchronizing content, such as a file, between one or more clients and one or more servers are provided. Example embodiments provide a Cross-File Differential Content Synchronization System (CDCSS) to synchronize files between remote systems in a nearly instantaneous manner without necessitating the transfer of the entire contents of a file. These components cooperate to transfer only the differences in data content wherever possible to a recipient system by providing a patch mechanism that instructs the recipient to build the modified or new data content based upon content it already has access to. In addition, in one embodiment the CDCSS synchronization solution provides a client-based index, rather than a server-based index, for tracking patches and files, which reduces the amount of computational and I/O overhead on the server and which does not require a negotiation between a client and a server to provide an update.
31 Citations
20 Claims
-
1. A method for synchronizing a target file located on a server between the server and a client by generating the target file on the client, comprising:
-
conveying a patch for generating the target file on the client to the client from the server, the patch comprising a plurality of segments, each segment corresponding to one of a plurality of portions of the target file, wherein the entire target file is divided among the plurality of portions of the target file, each segment containing either data content of the corresponding portion or a reference to the data content of the corresponding portion, the reference comprising information for locating the referenced data content in files stored on the client without including the referenced data content; conveying a manifest to the client, the manifest comprising a list that identifies the files referred to in segments of the patch containing references to the data content, for enabling the client to verify that the files referred to in the segments of the patch containing the references to the data content are available on the client; generating the target file on the client by retrieving the data content of portions of the target file from segments of the patch containing the data content of the corresponding portions; and retrieving the data content of portions of the target file for which the reference to the data content of the corresponding portion is provided in the patch from the corresponding referenced files on the client. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A non-transitory computer readable storage medium for synchronizing a target file located on a server between the server and a client by generating the target file on the client, comprising one or more sequences of instructions, the instructions when executed by one or more processors causing the one or more processors to execute the operations of:
-
conveying a patch for generating the target file on the client to the client from the server, the patch comprising a plurality of segments, each segment corresponding to one of a plurality of portions of the target file, wherein the entire target file is divided among the plurality of portions of the target file, each segment containing either data content of the corresponding portion or a reference to the data content of the corresponding portion, the reference comprising information for locating the referenced data content in files stored on the client without including the referenced data content; conveying a manifest to the client, the manifest comprising a list that identifies the files referred to in segments of the patch containing references to the data content, for enabling the client to verify that the files referred to in the segments of the patch containing the references to the data content are available on the client; generating the target file on the client by retrieving the data content of portions of the target file from segments of the patch containing the data content of the corresponding portions; and retrieving the data content of portions of the target file for which the reference to the data content of the corresponding portion is provided in the patch from corresponding referenced files on the client. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computing device for synchronizing a target file between the server and a client by generating the target file on the client, comprising one or more sequences of instructions, comprising:
-
at least one processor; and memory including instructions that, when executed by the at least one processor, cause the computing device to perform the steps of; conveying a patch for generating the target file on the client to the client from the server, the patch comprising a plurality of segments, each segment corresponding to one of a plurality of portions of the target file, wherein the entire target file is divided among the plurality of portions of the target file, each segment containing either data content of the corresponding portion or a reference to the data content of the corresponding portion, the reference comprising information for locating the referenced data content in files stored on the client without including the referenced data content; conveying a manifest to the client, the manifest comprising a list that identifies the files referred to in segments of the patch containing references to the data content, for enabling the client to verify that the files referred to in the segments of the patch containing the references to the data content are available on the client; generating the target file on the client by retrieving the data content of portions of the target file from segments of the patch containing the data content of the corresponding portions; and retrieving the data content of portions of the target file for which the reference to the data content of the corresponding portion is provided in the patch from corresponding referenced files on the client. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification