CA2437281C

Client-server model for synchronization of files

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.

CA2437281C, drawing sheet 1
Sheet 1 of 33

Term

Term ended

Expired 15 March 2022, 4.5 years ago.

  1. Priority
  2. Filed
  3. Granted
  4. Expired
  5. Today

22 claims: 6 independent, 16 dependent

  1. 1
    CA 02437281 2009-01-14 I/WE CLAIM:1. (Currently Amended) A synchronization file system (SFS) installed on a server, for synchronizing data with a client having an account on the server and the client including a Synchronization Application (SA) that uses the SFS to synchronize client data with the server account, the synchronization file system comprising: a server sync index (SSI) indicative of a current state of the client account;at least one first directory entry for each directory within the client account, the first directory entry including a first metadata item containing a directory sync index (DSI) associated with a last change within the each directory;at least one second directory entry for each file within the directory, the second directory entry including a corresponding second metadata item containing a file sync index (FSI) associated with a last change in the each file;the synchronization file system configuring the server to: determine whether the server account and client data are synchronized using the SSI and a Client Sync Index (CSI) received from the client;identify directories within the client account with changes that need to be pushed to the client, using the DSI and the received CSI;identify metadata items, from each identified directory, that need to be sent to the client, using the FSI and the received CSI;store a message digest array (MDA) for the each file on the server, wherein the MDA is an array of hashes of blocks of the file;transmit the MDA to the client responsive to a request from the client;and store a server ID (SID) to at least one of the first and second metadata items. DOCSTOR: 1579165\1 CA 02437281 2009-01-14
  2. 11
    (Currently Amended) A method for a synchronization file system of a server to synchronize a first directory on the synchronization file system with a second directory on a client, comprising:receiving a client sync index (CSI) from the client;transmitting a server sync index (SSI) to the client;determining whether the server and client are synchronized using the CSI and SSI;and if the server and client are not synchronized: receiving an instruction from the client to update a directory entry of the first directory;transmitting a message digest array (MDA) of a file to the client in response to a message received from the client, the message digest array comprising a hash of each block of the file;receiving a file from the client, and adding the file into a server synchronization file system database, including: copying the file to a temporary file;receiving a block of the file;incorporating the block into the temporary copy of the file;and adding the temporary copy of the file into a server synchronization file system database to complete the synchronization;assigning a server ID to the file;and transmitting the server ID for the file to the client;updating a server sync index (SSI), where the server sync index identifies the state of the first directory;and transmitting the updated server sync index to the client. DOCSTOR: 1579165M CA 02437281 2009-01-14
  3. 15
    A computer-readable media comprising software instructions for a synchronization file system of a server to synchronize a first directory on the synchronization file system with a second directory on a client, the software instructions comprising:software instructions for receiving a client sync index (CSI) from the client;software instructions for transmitting a server sync index (SSI) to the client;software instructions for using the CSI and SSI to determine whether the server and client are synchronized;and if the server and client are not synchronized: software instructions for generating a server sync data (SSD), the SSD including the SSI and a directory sync index (DSI);software instructions for transmitting the SSD to the client;software instructions for receiving a request for a message digest array (MDA) for a file, wherein the MDA is an array of hashes of blocks of file;and software instructions for transmitting the MDA to the client. DOCSTOR: 1579165M CA 02437281 2009-01-14
  4. 16
    A Computer-readable media comprising software instructions for a synchronization file system of a server to synchronize a first directory on the synchronization file system with a second directory on a client, the software instructions comprising:software instructions for receiving an instruction from the client to update a first directory entry and a second directory entry, including receiving a request for a message digest array (MDA) for the file, the MDA is an array of hashes of blocks of the file;software instructions for performing the instruction, including transmitting the MDA to the client;software instructions for updating a server sync index (SSI);software instructions for updating a directory sync index (DSI) for the first directory entry;software instructions for updating a file sync index (FSI) for the second directory entry;and software instructions for transmitting the updated SSI, the updated DSI and the updated FSI to the client.
  5. 17
    A client synchronization application (SA) running on a client for synchronizing a user's account on a server, the SA comprising:means for comparing a client sync index (CSI) identifying a client side current known state of the account, with a server sync index (SSI) identifying a server side known state of the account, and where the indexes are incremental sequence numbers identifying changes on the users account;means for determining if the client is in sync with the server based on the compared client sync index and server sync index , means for receiving server sync data (SSD) from the server, the SSD tracking the state of the account on the server;DOCSTOR: 1579)65X1 CA 02437281 2009-01-14 means for comparing a client sync data, which tracks the state of the account on the server the last time the client synchronized with the server, and the server sync data to determine what updates to make to the client and/or server to synchronise the client and server;and a directory entry stored on the client, wherein the directory entry is a file;a message digest array for the file, the message digest array comprising a message digest for each block of the file;means for receiving a second message digest array from the server;and means for partially uploading or downloading the file to update the file, the means for partially uploading or downloading including means for comparing the message digest array and the second message digest array to identify individual blocks with changes for uploading or downloading, and means for updating the client sync index and client sync data when the update is complete.
  6. 18
    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:transmitting a client sync index to the synchronization file system, where the client sync index identifies the state of the first directory;receiving a server sync index from the synchronization file system, where the client sync index identifies the state of the second directory;and comparing the client sync index and server sync index to determine whether the server and client are synchronized wherein a directory entry is a file is stored on the client, based on the comparison receiving a server sync data, which tracks the state of the account on the server, from the synchronization file system;comparing a client sync data, which tracks the state of the account on the server the last time the client synchronized with the server, and the DOCSTOR: 1579165\1 CA 02437281 2009-01-14 server sync data to determine what updates to make to the client and/or server to synchronise the client and server;and the method comprises the further step of partially uploading or downloading the file to update the file, wherein a message digest array for the file on the client is compared with a message digest array received from the server to identify individual blocks with changes for uploading or downloading, and updating the client sync index and client sync data when the update is complete.