IP Library Granted Patent US 7,734,826
Granted Patent B2
US 7,734,826 · App. 10/099,522 · Granted Jun 8, 2010

Client-server model for synchronization of files

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,734,826
App. No.
10/099,522
Granted
Jun 8, 2010
Kind
B2
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.

Claims (75)

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.

2. A computer-readable non-transitory medium according to claim 1 , wherein the filter driver monitors activity corresponding to the files stored on the client.

3. A computer-readable non-transitory medium according to claim 1 , wherein the metadata comprises a client ID (CID), a server ID, and a file sync index (FSI).

4. A computer-readable non-transitory medium according to claim 1 , wherein the client synchronization application further comprises means for partially uploading or downloading the file.

5. A computer-readable non-transitory medium according to claim 4 , wherein:

the client synchronization application further comprises:

a message digest array (MDA) for the file;

means for receiving a second MDA from the server; and

the means for partially uploading or downloading includes means for comparing the MDA and the second MDA.

6. A computer-readable non-transitory medium according to claim 5 , wherein the MDA is stored with a metadata item for the file.

7. A computer-readable non-transitory medium according to claim 5 , wherein the client synchronization application further comprises means for generating the MDA for the file.

8. A computer-readable non-transitory medium according to claim 5 , wherein the client synchronization application further comprises means for storing a change time to the file.

9. A computer-readable non-transitory medium according to claim 1 , wherein the client synchronization application further comprises means for decrypting the SSI received from the server if the SSI is encrypted.

10. A computer-readable non-transitory medium according to claim 1 , wherein the client synchronization application further comprises means for decrypting the SSD received from the server if the SSD is encrypted.

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.

13. A method according to claim 12 , wherein comparing a client sync data (CSD) and the SSD includes:

identifying a server ID (SID) in the SSD but not in the CSD; and

determining that a file exists on the server and is missing on the client.

14. A method according to claim 12 , further comprising updating the CSD based on the comparison of the CSD and the SSD.

15. A method according to claim 12 , further comprising updating a metadata item based on the SSD.

16. A method according to claim 12 , wherein updating the file on the client includes:

requesting the file from the synchronization file system by a server ID;

the client receiving the file from the synchronization file system of the server; and

storing the file on the client.

17. A method according to claim 16 , wherein:

requesting the file includes requesting a block of the file from the synchronization file system; and

receiving the file includes the client receiving the block of the file from the synchronization file system of the server.

18. A method according to claim 16 , wherein:

requesting the file includes requesting a first message digest array (MDA) for the file from the synchronization file system, the first MDA including an array of hashes of blocks of the file;

receiving the file includes receiving the first MDA of the file from the synchronization file system;

identifying a second MDA for a file on the client; and

comparing the first MDA and the second MDA.

Assignments (13)
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
CHANGE OF NAME Recorded Sep 13, 2016
From: NOVELL, INC.
To: MICRO FOCUS SOFTWARE INC.
Reel/Frame 040020/0703 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034469/0057 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034470/0680 →
GRANT OF PATENT SECURITY INTEREST FIRST LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0216 →
GRANT OF PATENT SECURITY INTEREST SECOND LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0316 →
RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0077 →
RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0154 →