Server for synchronization of files
View Patent ↗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.
1. A synchronization file system installed on a server, comprising:
a server sync index (SSI) for the synchronization file system;
a first directory entry for a directory, including a first metadata item containing a directory sync index(DSI);
a second directory entry for a file, including a second metadata item containing a file sync index(FSI);
means for storing a message digest array (MDA), wherein the MDA is an array of hashes of blocks of the file;
means for transmitting the MDA to the client; and
means for assigning a server ID (SID) to at least one of the first metadata item for the first directory entry and the second metadata item for the second directory entry.
2. A synchronization file system according to claim 1 , further comprising means for updating the SSI when a change occurs to the first directory entry.
3. A synchronization file system according to claim 1 , further comprising means for storing a change time to the metadata item for the directory entry.
4. A synchronization file system according to claim 1 , further comprising means for assigning a previous version file ID (PFID) to the second metadata item.
5. A synchronization file system according to claim 1 , wherein:
the second directory entry includes a name; and
the synchronization file system further comprises means for storing an encrypted version of the name in the metadata item for the second directory entry.
6. A synchronization file system according to claim 1 , further comprising means for storing an encrypted version of the file.
7. A synchronization file system according to claim 1 , wherein the means for storing includes means for storing the MDA with the file.
8. A synchronization file system according to claim 1 , wherein the means for storing includes means for storing the MDA in the metadata item.
9. A synchronization file system according to claim 1 , further comprising means for generating a server sync data (SSD).
10. A synchronization file system according to claim 9 , wherein the means for generating includes means for generating a SSD responsive to a client sync index (CSI).
11. A synchronization file system installed on a server, comprising
a directory in a user account in the sync file system;
a server ID assigned to the directory;
a directory sync index (DSI) assigned to the directory;
a file in the directory;
a message digest array (MDA), the MDA is an array of hashes of blocks of the file;
means for transmitting the MDA to the client;
a file sync index (FSI) assigned to the file; and
a server sync index (SSI) for the user account.
12. A synchronization file system according to claim 11 , further comprising a metadata item for the directory storing the server ID assigned to the directory.
13. A synchronization file system according to claim 12 , wherein the metadata item for the directory further stores a directory sync index assigned to the directory.
14. A synchronization file system according to claim 12 , wherein the metadata item for the directory further stores a change time assigned to the directory.
15. A synchronization file system according to claim 12 , wherein:
the directory includes a name; and
the metadata item for the directory further stores an encrypted name assigned to the directory.
16. A synchronization file system according to claim 11 , further comprising:
a second server ID assigned to the file.
17. A synchronization file system according to claim 16 , further comprising a metadata item for the file storing the second server ID assigned to the file and the FSI assigned to the file.
18. A synchronization file system according to claim 17 , wherein the metadata item f or the file further stores a previous version file ID (PFID) assigned to the file.
19. synchronization file system according to claim 17 , wherein the metadata item for the file further stores a change time assigned to the file.
20. A synchronization file system according to claim 17 , wherein:
the file includes a name; and
the metadata item for the file further stores an encrypted name assigned to the file.
21. A synchronization file system according to claim 16 , wherein the file is an encrypted file.
22. A synchronization file system according to claim 11 , wherein the MDA is stored with the file.
23. A synchronization file system according to claim 11 , wherein the MDA is stored in a metadata item for the file.
24. A synchronization file system according to claim 11 , further comprising a server sync data (SID).
25. A synchronization file system according to claim 11 , further comprising:
a first metadata item for the directory to store the DSI; and
a second metadata item for the directory to store the FSI. comprising a server sync data (SSD).
26. 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;
using the CSI and SSI to determine whether the server and client are synchronized; and if the server and client are not synchronized:
generation a server sync data (SSD), the SSD including the SSI and a directory sync index (DSI);
transmitting the SSD to the client;
receiving a request for a message digest array (MDA) for a file, wherein the MDA is an array of hashes of blocks of the file; and
transmitting the MDA to the client.
27. A method according to claim 26 , further comprising: receiving a request from the client for the file; transmitting the file to the client.
28. A method according to claim 26 , wherein:
receiving a request includes receiving a request from the client for one block of the file; and
transmitting the file includes transmitting the requested block of the file to the client.
29. A method according to claim 26 , wherein generating a server sync data (SSD) includes generating the server sync data (SSD), the SSD including the SSI, a directory sync index (DSI), and a file sync index (FSI).
30. A synchronization file system (SFS) of a server to synchronize a first directory on the synchronization file system with a second directory on a client, comprising:
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), wherein the MDA is an array of hashes of blocks of the file;
performing the instruction, including transmitting the MDA to the client;
updating a server sync index (SSI); and
updating a directory sync index (DSI) for the first directory entry;
updating a file sync index (FSI) for the second directory entry; and
transmitting the updated SSI, the updated DSI and the updated FSI to the client.
31. A method according to claim 30 , further comprising the synchronization file system assigning the SSI to a metadata item.
32. A method according to claim 30 , wherein:
receiving an instruction further includes receiving a metadata item from the client; and
performing the instruction further includes adding the metadata item to a server SFS database.
33. A method according to claim 30 , wherein performing the instruction further includes modifying a metadata item.
34. A method according to claim 30 , wherein performing an instruction further includes:
creating a third directory in the first directory;
assigning a server ID (SID) to the third directory; and
transmitting the SID for the third directory to the client.
35. A method according to claim 34 , wherein assigning a server ID (SID) to the third directory includes storing the SID in a metadata item for the third directory.
36. A method according to claim 30 , wherein performing an instruction further includes:
receiving a second file from the client;
adding the second rile into a server SFS database;
assigning a server ID (SID) to the second file; and
transmitting the SID:for the second file to the client.
37. A method according to claim 36 , wherein receiving a second file includes:
copying the second file to a temporary file;
receiving a block of the second file;
incorporating the block into the temporary copy of the second file; and
adding the temporary copy of the second file into a server SFS database.
38. Computer-readable media containing a program 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:
software for receiving a client sync index (CSI) from the client;
software for transmitting a server sync index (SSI) to the client;
software 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 for generation a server sync data (SSD), the SSD including the SSI and a directory sync index (DSI);
transmitting the SSD to the client;
software 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 for transmitting the MDA to the client.
39. Computer-readable media containing a program 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:
software 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 for performing the instruction, including transmitting the MDA to the client;
software for updating a server sync index (SSI);
software for updating a directory sync index (DSI) for the first directory entry;
software for updating a file sync index (FSI) for the second directory entry; and
software for transmitting the updated SSI, the updated DSI and the updated FSI to the client.