Synchronization system for multiple client devices
First Claim
1. A computer-implemented method practiced on a client device comprising two synchronization engines, the method comprising:
- receiving, by the client device, a synchronization token for a user data set to synchronize down from a synchronization service to the client device, the receiving based at least in part on one or more synchronization preferences specified by the client device being met;
in response to receiving the synchronization token and determining that the received synchronization token is more recent than a corresponding synchronization token for the data set on the client device;
receiving, from the synchronization service, by the client device utilizing a first synchronization engine, a first snapshot of user data stored by a remote storage service, wherein timing of the receiving is dynamically adjustable by the synchronization service based on a first set of conditions that include whether one or more synchronization preferences of the client device coincide with a determination by the synchronization service that a synchronize down operation is needed, independent from the synchronization service detecting a change to user data at the remote storage service;
storing the first snapshot of the user data in a first database on the client device;
downloading content corresponding to one or more differences between the user data on the remote storage service and the user data on the client device file system;
updating a file system on the client device with the downloaded content to reflect one or more differences between the user data on the remote storage service and the user data on the file system, as indicated in the first snapshot;
generating a second snapshot of the user data from the file system on the client device;
storing the second snapshot in a second database on the client device, the second database different from the first database; and
transmitting the second snapshot in the second database on the client device to the remote storage service, utilizing a second synchronization engine, for processing by the synchronization service, wherein timing of the transmitting to the remote storage service is dynamically determined by the client device based on a second set of conditions, different from the first set of conditions.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are disclosed for synchronizing one or more user data sets on one or more client devices of a user, using a synchronization system. Each client device can have two independent and asynchronously-operating synchronization engines. The synchronization system can include a synchronization system manager that can resolve conflicts in data that arise from different versions of software being used generate a data set. Each client can maintain two separate databases: a first database that can contain a snapshot of the state of the user data sets across client devices, as known to the synchronization system. The second database can contain a snapshot of the local file system and information about the state of synchronization of the local file system with the synchronization system.
-
Citations
25 Claims
-
1. A computer-implemented method practiced on a client device comprising two synchronization engines, the method comprising:
-
receiving, by the client device, a synchronization token for a user data set to synchronize down from a synchronization service to the client device, the receiving based at least in part on one or more synchronization preferences specified by the client device being met; in response to receiving the synchronization token and determining that the received synchronization token is more recent than a corresponding synchronization token for the data set on the client device; receiving, from the synchronization service, by the client device utilizing a first synchronization engine, a first snapshot of user data stored by a remote storage service, wherein timing of the receiving is dynamically adjustable by the synchronization service based on a first set of conditions that include whether one or more synchronization preferences of the client device coincide with a determination by the synchronization service that a synchronize down operation is needed, independent from the synchronization service detecting a change to user data at the remote storage service; storing the first snapshot of the user data in a first database on the client device; downloading content corresponding to one or more differences between the user data on the remote storage service and the user data on the client device file system; updating a file system on the client device with the downloaded content to reflect one or more differences between the user data on the remote storage service and the user data on the file system, as indicated in the first snapshot; generating a second snapshot of the user data from the file system on the client device; storing the second snapshot in a second database on the client device, the second database different from the first database; and transmitting the second snapshot in the second database on the client device to the remote storage service, utilizing a second synchronization engine, for processing by the synchronization service, wherein timing of the transmitting to the remote storage service is dynamically determined by the client device based on a second set of conditions, different from the first set of conditions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A non-transitory computer readable medium programmed with executable instructions that, when executed by a processing system, perform operations that implement two synchronization engines on a client device, the operations comprising:
-
receiving, by the client device, a synchronization token for a user data set to synchronize down from a synchronization service to the client device, the receiving based at least in part on one or more synchronization preferences specified by the client device being met; in response to receiving the synchronization token and determining that the received synchronization token is more recent than a corresponding synchronization token for the data set on the client device; receiving, from the synchronization service, by the client device utilizing a first synchronization engine, a first snapshot of user data stored by a remote storage service, wherein timing of the receiving is dynamically adjustable by the synchronization service based on a first set of conditions that include whether one or more synchronization preferences of the client device coincide with a determination by the synchronization service that a synchronize down operation is needed, independent from the synchronization service detecting a change to user data at the remote storage service; storing the first snapshot of the user data in a first database on the client device; downloading content corresponding to one or more differences between the user data on the remote storage service and the user data on the client device file system; updating a file system on the client device with the downloaded content to reflect one or more differences between the user data on the remote storage service and the user data on the file system, as indicated in the first snapshot; generating a second snapshot of the user data from the file system on the client device; storing the second snapshot in a second database on the client device, the second database different from the first database; and transmitting the second snapshot in the second database on the client device to the remote storage service, utilizing a second synchronization engine, for processing by the synchronization service, wherein timing of the transmitting to the remote storage service is dynamically determined by the client device based on a second set conditions different from the first set of conditions. - View Dependent Claims (13, 14, 15, 16, 17, 18)
-
-
19. A system comprising:
-
a processing system programmed with executable instructions that, when executed, perform operations that implement two synchronization engines on a client device, the operations comprising; receiving, by the client device, a synchronization token for a user data set to synchronize down from a synchronization service to the client device, the receiving based at least in part on one or more synchronization preferences specified by the client device being met; in response to receiving the synchronization token and determining that the received synchronization token is more recent than a corresponding synchronization token for the data set on the client device; receiving, from the synchronization service, by the client device utilizing a first synchronization engine, a first snapshot of user data stored by a remote storage service, wherein timing of the receiving is dynamically adjustable by the synchronization service based on a first set of conditions that include whether one or more synchronization preferences of the client device coincide with a determination by the synchronization service that a synchronize down operation is needed, independent from the synchronization service detecting a change to user data at the remote storage service; storing the first snapshot of the user data in a first database on the client device; downloading content corresponding to one or more differences between the user data on the remote storage service and the user data on the client device file system; updating a file system on the client device with the downloaded content to reflect one or more differences between the user data on the remote storage service and the user data on the file system, as indicated in the first snapshot; generating a second snapshot of the user data from the file system on the client device; storing the second snapshot in a second database on the client device, the second database different from the first database; and transmitting the second snapshot in the second database on the client device to the remote storage service, utilizing a second synchronization engine, for processing by the synchronization service, wherein timing of the transmitting to the remote storage service is dynamically determined by the client device based on a second set of conditions, different from the first set of conditions. - View Dependent Claims (20, 21, 22, 23, 24, 25)
-
Specification