IP Library Granted Patent US 8,825,597
Granted Patent B1
US 8,825,597 · App. 12/856,581 · Granted Sep 2, 2014

Network folder synchronization

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 8,825,597
App. No.
12/856,581
Granted
Sep 2, 2014
Kind
B1
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 (54)

1. A method for synchronizing a shared folder over a network, the method comprising:

receiving a first file and an associated first block list at a host system from a first client system;

associating the received file with a synchronized folder on the host system, the synchronized folder having an associated first namespace and the folder including a plurality of files, each of the plurality of files having an associated block list;

receiving a request from the first client system to share the synchronized folder with a second client system;

associating the synchronized folder with a second namespace;

associating the synchronized folder with the second client system;

receiving a request from the second client system for contents of the synchronized folder;

providing to the second client system a link from a third namespace to the second namespace, and an indication of each of the plurality of files and its associated block list in the synchronized folder;

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;

providing the first file including the requested blocks to the second client system;

receiving at the host system from the first client system a modification to the first file;

updating the first file and its associated first block list according to the received modification;

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

receiving a request from the second client system for the modification to the first file; and

sending, by the host system, a difference between the blocks in the updated block list and the first block list.

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 an indication to a third client system that the contents of the folder have changed, the indication including the first and the updated first block list associated with the first file;

receiving a request from the third client system for the modification to the first file;

and

sending, by the host system to the third client system the difference between the blocks in the updated first block list and the first block list.

4. The method of claim 1 further comprising:

receiving, by a notification server at the host system, a request from a plurality of additional client systems to be notified of modifications to the synchronized folder;

informing, by the host system, the plurality of additional client systems that the first file has been modified;

receiving, by the host system from at least one of the plurality of additional clients, a request for one of the blocks in the updated first block list, the request also identifying at least one of the blocks in the first block list;

determining, by a block server, a difference between the identified first block and the requested updated first block; and

sending, by the block server to the additional client, the determined difference between the identified first block and the requested updated first block.

5. A computer program product for synchronizing a folder across a computer network, the computer program product stored on a non-transitory computer readable medium and including instructions that when loaded into memory cause a computer processor to carry out the steps of:

receiving a first file and an associated first block list at a host system from a first client system;

associating the received file with a synchronized folder on the host system, the synchronized folder having an associated first namespace and the folder including a plurality of files, each of the plurality of files having an associated block list;

receiving a request from the first client system to share the synchronized folder with a second client system;

associating the synchronized folder with a second namespace;

associating the synchronized folder with the second client system;

receiving a request from the second client system for contents of the synchronized folder;

providing to the second client system a link from a third namespace to the second namespace, and an indication of each of the plurality of files and its associated block list in the synchronized folder;

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;

providing the first file including the requested blocks to the second client system;

receiving at the host system from the first client system a modification to the first file;

updating the first file and its associated first block list according to the received modification;

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

receiving a request from the second client system for the modification to the first file; and

sending, by the host system, a difference between the blocks in the updated block list and the first block list.

6. The computer program product of claim 5 wherein the instructions further cause the processor to carry out the steps of:

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

receiving a request from the third client system for the modification to the first file;

and

sending, by the host system to the third client system the difference between the blocks in the updated first block list and the first block list.

7. The computer program product of claim 5 wherein the instructions further cause the processor to carry out the steps of:

receiving, by a notification server at the host system, a request from a plurality of additional client systems to be notified of modifications to the synchronized folder;

informing, by the host system, the plurality of additional client systems that the first file has been modified;

receiving, by the host system from at least one of the plurality of additional clients, a request for one of the blocks in the updated first block list, the request also identifying at least one of the blocks in the first block list;

determining, by a block server, a difference between the identified first block and the requested updated first block; and

sending, by the block server to the additional client, the determined difference between the identified first block and the requested updated first block.

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

Assignments (10)
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 →
RELEASE OF SECURITY INTEREST Recorded Dec 12, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069613/0744 →
RELEASE OF SECURITY INTEREST Recorded Dec 11, 2024
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 069600/0149 →
PATENT SECURITY AGREEMENT Recorded Mar 10, 2021
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 055670/0219 →
SECURITY INTEREST Recorded Apr 14, 2017
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 042254/0001 →
SECURITY INTEREST Recorded Mar 24, 2014
From: DROPBOX, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 032510/0890 →
RELEASE OF SECURITY AGREEMENT Recorded Mar 21, 2014
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: DROPBOX, INC.
Reel/Frame 032492/0676 →
PATENT SECURITY AGREEMENT Recorded Nov 16, 2012
From: DROPBOX, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 029310/0864 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 27, 2010
From: HOUSTON, DREW; FERDOWSI, ARASH
To: DROPBOX, INC.
Reel/Frame 024899/0984 →