IP Library Granted Patent US 10,911,518
Granted Patent B2
US 10,911,518 · App. 16/192,840 · Granted Feb 2, 2021

Network folder synchronization

Inventors: Drew Houston (San Francisco, CA); Arash Ferdowsi (San Francisco, CA)
Assignee: Dropbox, Inc.
H04L67/06G06F16/10G06F16/178H04L67/1095
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 10,911,518
App. No.
16/192,840
Granted
Feb 2, 2021
Kind
B2
Abstract

Synchronization of folders shared among multiple clients over a network is provided. A first user of a first client instantiates a folder to be shared, and the folder and its contents are synchronized with a host system. As the user makes changes to the folder and its contents on the first client, those changes are propagated to the synchronized version on the host server. Other clients who will be sharing the synchronized folder register with the host system and obtain a current version of the synchronized folder and contents. As the contents of the synchronized folder are changed by any of the clients, the changes are propagated to the host system, which in turn delivers the changes to each of the clients registered as sharing that folder. In this way, each client participating in the share has a current version of the folder and its contents.

Claims (105)

1. A computer-implemented method comprising:

receiving, by a web server at a host system, a request from a first client to synchronize a folder on a first client system with the host system, the folder including a first file;

synchronizing the folder stored on the first client system with the host system, wherein synchronizing the folder comprises:

receiving the first file and an associated first block list at the host system from the first client system,

storing the received first file and associated first block list at the host system, and

associating the received file and its associated first block list with a synchronized folder on the host system;

in response to receiving, by the web server at the host system, indicia of a collaborator to be invited to the synchronized folder, inviting, by the host system, the indicated collaborator to the synchronized folder;

associating the synchronized folder on the host system with an account associated with a second client system associated with the collaborator;

in response to receiving, at the host system, a request from the second client system to synchronize the folder, synchronizing the folder with the second client system, wherein synchronizing the folder comprises:

providing, by the host system, an indication to the second client system of each file in the synchronized folder and its associated block list,

receiving at the host system a request from the second client system for the first file, the request including blocks identified in the provided first block list, and

providing, by the host system, the first file including the requested blocks to the second client system; and

synchronizing a modification to the first file made by the second client system, wherein synchronizing comprises:

receiving at the host system from the second client system a notification of the modification to the first file, the notification including the first block list and an updated block list,

responsive to a determination by the host system that at least one block included in the updated block list is not stored at the host system, requesting, by the host system from the second client system, a patch for the at least one block not stored at the host system,

receiving, by the host system from the second client system, the requested patch,

providing, by the host system, an indication to the first client system that the contents of the folder have changed, the indication including the updated block list associated with the first file,

receiving, by the host system, a request from the first client system for a patch for at least one block identified in the updated block list, and

sending, to the first client system by the host system, the requested patch.

2. The method of claim 1 wherein each block identified in the first block list is a hash of a portion of the first file.

3. The method of claim 1 further comprising:

providing, by the host system, an indication to a third client system that the contents of the folder have changed, the indication including the updated block list associated with the first file;

receiving, by the host system, a request from the third client system for a patch for at least one block identified in the updated block list; and

sending, by the host system to the third client system, the requested patch.

4. The method of claim 3 wherein the third client system is associated with the collaborator.

5. The method of claim 1 wherein the folder includes a second file, and synchronizing the folder on the first client system with the host system further comprises:

receiving the second file and an associated second block list at the host system from the client system;

storing the received second file and associated second block list at the host system; and

associating the received second file and associated second block list with the synchronized folder on the host system.

6. The method of claim 5 further comprising:

synchronizing a deletion of the second file made by the second client system, wherein synchronizing comprises:

receiving at the host system from the second client system a notification of the deletion of the second file; and

removing, by the host system, the association between the second file and second block list with the synchronized folder on the host system.

7. The method of claim 6 further comprising:

providing, by the host system, an indication to the first client system that the contents of the folder have changed, the indication including a notification that the second file has been deleted.

8. A computer program product stored on a non-transitory computer-readable medium and including instructions adapted to cause a computer to perform steps comprising:

receiving, by a web server at a host system, a request from a first client to synchronize a folder on a first client system with the host system, the folder including a first file;

synchronizing the folder stored on the first client system with the host system, wherein synchronizing the folder comprises:

receiving the first file and an associated first block list at the host system from the first client system,

storing the received first file and associated first block list at the host system, and

associating the received file and its associated first block list with a synchronized folder on the host system;

in response to receiving, by the web server at the host system, indicia of a collaborator to be invited to the synchronized folder, inviting, by the host system, the indicated collaborator to the synchronized folder;

associating the synchronized folder on the host system with an account associated with a second client system associated with the collaborator;

in response to receiving, at the host system, a request from the second client system to synchronize the folder, synchronizing the folder with the second client system, wherein synchronizing the folder comprises:

providing, by the host system, an indication to the second client system of each file in the synchronized folder and its associated block list,

receiving at the host system a request from the second client system for the first file, the request including blocks identified in the provided first block list, and

providing, by the host system, the first file including the requested blocks to the second client system; and

synchronizing a modification to the first file made by the second client system, wherein synchronizing comprises:

receiving at the host system from the second client system a notification of the modification to the first file, the notification including the first block list and an updated block list,

responsive to a determination by the host system that at least one block included in the updated block list is not stored at the host system, requesting, by the host system from the second client system, a patch for the at least one block not stored at the host system,

receiving, by the host system from the second client system, the requested patch,

providing, by the host system, an indication to the first client system that the contents of the folder have changed, the indication including the updated block list associated with the first file,

receiving, by the host system, a request from the first client system for a patch for at least one block identified in the updated block list, and

sending, to the first client system by the host system, the requested patch.

9. The computer program product of claim 8 wherein each block identified in the first block list is a hash of a portion of the first file.

10. The computer program product of claim 8 further comprising:

providing, by the host system, an indication to a third client system that the contents of the folder have changed, the indication including the updated block list associated with the first file;

receiving, by the host system, a request from the third client system for a patch for at least one block identified in the updated block list; and

sending, by the host system to the third client system, the requested patch.

11. The computer program product of claim 10 wherein the third client system is associated with the collaborator.

12. The computer program product of claim 8 wherein the folder includes a second file, and synchronizing the folder on the first client system with the host system further comprises:

receiving the second file and an associated second block list at the host system from the client system;

storing the received second file and associated second block list at the host system; and

associating the received second file and associated second block list with the synchronized folder on the host system.

13. The computer program product of claim 12 further comprising:

synchronizing a deletion of the second file made by the second client system, wherein synchronizing comprises:

receiving at the host system from the second client system a notification of the deletion of the second file; and

removing, by the host system, the association between the second file and second block list with the synchronized folder on the host system.

14. The computer program product of claim 13 further comprising:

providing, by the host system, an indication to the first client system that the contents of the folder have changed, the indication including a notification that the second file has been deleted.

15. A host system comprising:

at least one processor;

a memory storing instructions that, when executed by the at least one processor, cause the host system to:

receive a request from a first client to synchronize a folder on a first client system with the host system, the folder including a first file;

synchronize the folder stored on the first client system with the host system, wherein synchronizing the folder comprises:

receiving the first file and an associated first block list at the host system from the first client system,

storing the received first file and associated first block list at the host system, and

associating the received file and its associated first block list with a synchronized folder on the host system;

in response to receiving, by the host system, indicia of a collaborator to be invited to the synchronized folder, invite, by the host system, the indicated collaborator to the synchronized folder;

associate the synchronized folder on the host system with an account associated with a second client system associated with the collaborator;

in response to receiving, at the host system, a request from the second client system to synchronize the folder, synchronize the folder with the second client system, wherein synchronizing the folder comprises:

providing, by the host system, an indication to the second client system of each file in the synchronized folder and its associated block list,

receiving at the host system a request from the second client system for the first file, the request including blocks identified in the provided first block list, and

providing, by the host system, the first file including the requested blocks to the second client system; and

synchronize a modification to the first file made by the second client system, wherein synchronizing comprises:

receiving at the host system from the second client system a notification of the modification to the first file, the notification including the first block list and an updated block list,

responsive to a determination by the host system that at least one block included in the updated block list is not stored at the host system, requesting, by the host system from the second client system, a patch for the at least one block not stored at the host system,

receiving, by the host system from the second client system, the requested patch,

providing, by the host system, an indication to the first client system that the contents of the folder have changed, the indication including the updated block list associated with the first file,

receiving, by the host system, a request from the first client system for a patch for at least one block identified in the updated block list, and

sending, to the first client system by the host system, the requested patch.

16. The system of claim 15 wherein each block identified in the first block list is a hash of a portion of the first file.

17. The system of claim 15 wherein the instructions further cause the host system to:

provide an indication to a third client system that the contents of the folder have changed, the indication including the updated block list associated with the first file;

receive a request from the third client system for a patch for at least one block identified in the updated block list; and

send to the third client system the requested patch.

18. The system of claim 17 wherein the third client system is associated with the collaborator.

19. The system of claim 15 wherein the folder includes a second file, and synchronizing the folder on the first client system with the host system further comprises:

receiving the second file and an associated second block list at the host system from the client system;

storing the received second file and associated second block list at the host system; and

associating the received second file and associated second block list with the synchronized folder on the host system.

20. The system of claim 19 wherein the instructions further cause the host system to:

synchronize a deletion of the second file made by the second client system, wherein synchronizing comprises:

receiving at the host system from the second client system a notification of the deletion of the second file;

removing, by the host system, the association between the second file and second block list with the synchronized folder on the host system.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069635/0332 →
SECURITY INTEREST Recorded Dec 12, 2024
From: DROPBOX, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069604/0611 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2018
From: HOUSTON, DREW; FERDOWSI, ARASH
To: DROPBOX, INC.
Reel/Frame 047662/0115 →