Client-server model for synchronization of files
First Claim
Patent Images
1. A computer-readable non-transitory medium storing a client synchronization application suitable for running on a client, the client synchronization application comprising:
- a client sync index (CSI) identifying a state of files stored on the client;
a client synchronization file system (CSFS) storing client metadata corresponding to the files stored on the client;
client sync data (CSD) comprising first server IDs (SIDs), each first SID corresponding to one of the files stored on the client;
means for receiving a server sync index (SSI) from a server, the SSI identifying a state of files stored on the server;
means for comparing the CSI with the SSI;
means for determining if the files stored on the client are in sync with the files stored on the server based on the compared CSI and SSI;
means for receiving server sync data (SSD) from the server if the means for determining determines that the files stored on the client are not in sync with the files stored on the server, the SSD comprising second SIDs, each second SID corresponding to one of the files stored on the server;
means for determining CSD/SSD SIDs comprising a union of the first SIDs and the second SIDs;
means for determining whether each CSD/SSD SID is in at least one of the CSD and the SSD;
responsive to determining that a CSD/SSD SID is in the SSD and not in the CSD, means for downloading from the server a file corresponding to the CSD/SSD SID;
responsive to determining that a CSD/SSD SID is in the CSD and not in the SSD, means for deleting on the client a file corresponding to the CSD/SSD SID and removing the CSD/SSD SID from the CSD; and
a filter driver to monitor activity on the client, wherein the filter driver interrupts the client synchronization application if a second application accesses at least one of the files stored on the client.
16 Assignments
0 Petitions
Accused Products
Abstract
A server stores files. Distributed clients access the server, to learn about changes made to the files on the server, and to push local changes of the files onto the server. A synchronization application is used to synchronize the clients and server, synchronizing metadata and selected files.
50 Citations
18 Claims
-
1. A computer-readable non-transitory medium storing a client synchronization application suitable for running on a client, the client synchronization application comprising:
-
a client sync index (CSI) identifying a state of files stored on the client; a client synchronization file system (CSFS) storing client metadata corresponding to the files stored on the client; client sync data (CSD) comprising first server IDs (SIDs), each first SID corresponding to one of the files stored on the client; means for receiving a server sync index (SSI) from a server, the SSI identifying a state of files stored on the server; means for comparing the CSI with the SSI; means for determining if the files stored on the client are in sync with the files stored on the server based on the compared CSI and SSI; means for receiving server sync data (SSD) from the server if the means for determining determines that the files stored on the client are not in sync with the files stored on the server, the SSD comprising second SIDs, each second SID corresponding to one of the files stored on the server; means for determining CSD/SSD SIDs comprising a union of the first SIDs and the second SIDs; means for determining whether each CSD/SSD SID is in at least one of the CSD and the SSD; responsive to determining that a CSD/SSD SID is in the SSD and not in the CSD, means for downloading from the server a file corresponding to the CSD/SSD SID; responsive to determining that a CSD/SSD SID is in the CSD and not in the SSD, means for deleting on the client a file corresponding to the CSD/SSD SID and removing the CSD/SSD SID from the CSD; and a filter driver to monitor activity on the client, wherein the filter driver interrupts the client synchronization application if a second application accesses at least one of the files stored on the client. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system, comprising:
-
a server having installed thereon a synchronization file system including; a directory entry; a metadata item for the directory entry; server sync data (SSD) comprising first server IDs (SIDs) corresponding to files on the server; and a server sync index (SSI), the SSI representing a state of all files on the server; and a client, remote from the server, having installed thereon a client synchronization application including; client sync data (CSD) comprising second SIDs corresponding to files on the client; means for retrieving the SSI from the server; means for decrypting the SSI; means for comparing a client sync index (CSI) with the SSI, the CSI representing a state of all files on the client; and means for determining if the client is in sync with the server based on the compared CSI and SSI; means for retrieving the server sync data (SSD) from the server; means for decrypting the SSD; and means for determining CSD/SSD SIDs comprising a union of the first SIDs and the second SIDs; means for determining which, if any, of the files on the client are not in sync with the files on the server by determining whether each CSD/SSD SID is in only one of the CSD and the SSD; responsive to determining that a CSD/SSD SID is in the SSD and not in the CSD, means for downloading from the server a file corresponding to the CSD/SSD SID; responsive to determining that a CSD/SSD SID is in the CSD and not in the SSD, means for deleting on the client a file corresponding to the CSD/SSD SID and removing the CSD/SSD SID from the CSD; and a filter driver for interrupting the client synchronization application if a second application accesses at least one of the files on the client; and a network connecting the client to the server.
-
-
12. A method for a client to synchronize a first directory on the client with a second directory on a synchronization file system of a server, comprising:
-
the client transmitting a client sync index (CSI) to the synchronization file system of the server, the CSI identifying a state of files on the client; the client receiving a server sync index (SSI) from the synchronization file system of the server, the SSI identifying a state of files on the server; comparing the CSI to the SSI to determine whether the account on the server and the account on the client are synchronized; if the server and client are not synchronized; receiving server sync data (SSD) from the synchronization file system responsive to a determination that the account on the server and the account on the client are not synchronized, the SSD comprising first server IDs (SIDs); comparing client sync data (CSD) to the SSD to determine what updates to make to the client, wherein the CSD comprises second SIDs, and wherein comparing the CSD to the SSD comprises determining CSD/SSD SIDs comprising a union of the first SIDs and the second SIDs and determining whether each of the CSD/SSD SIDs is in at least one of the CSD and the SSD; and updating a directory entry on the client and a metadata item for the directory entry on the client; responsive to determining that a CSD/SSD SID is in the SSD and not in the CSD, means for downloading from the server a file corresponding to the CSD/SSD SID; responsive to determining that a CSD/SSD SID is in the CSD and not in the SSD, means for deleting on the client a file corresponding to the CSD/SSD SID and removing the CSD/SSD SID from the CSD; monitoring file activity on the client; and responsive to detecting an access of a file on the client by an application on the client during a driver read call of the file, temporarily suspending operation of the application while cancelling the driver read call. - View Dependent Claims (13, 14, 15, 16, 17, 18)
-
Specification