# US 10,769,131 B2 · Method and apparatus for a file sharing and synchronization system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,769,131 B2
- Document ID: US10769131B2
- Status: Granted
- Kind: B2
- Application number: 14/873,187
- Filed: 2015-10-01
- Published: 2016-01-28
- Granted: 2020-09-08
- Earliest claimed: 2004-11-08
- Assignees: Dropbox, Inc.
- Applicants: Dropbox, Inc.
- Inventors: Jack Benjamin Strong; Gibu Thomas
- Web page: https://patentgrep.com/patent/US10769131B2

## CPC

- G06F 16/48: Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F 16/1767: {Concurrency control, e.g. optimistic or pessimistic approaches}
- G06F 16/182: Distributed file systems
- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 16/51: Indexing; Data structures therefor; Storage structures
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A computer-implemented method is provided for managing and sharing picture files. In one embodiment of the present invention, the method comprises providing a server platform and providing a datastore on the server platform for maintaining full resolution copies of the files shared between a plurality of sharing clients. A synchronization engine is provided on the server platform and is configured to send real-time updates to a plurality of sharing clients when at least one of the sharing clients updates or changes one of said files. A web interface may also be provided that allows a user to access files in the datastore through the use of a web browser.

## Claims

### Claim 1

A method for synchronizing and sharing data objects, the method comprising:
maintaining, by a synchronization server, a copy of a data object shared with a first set of client devices associated with a user and a second set of client devices associated with one or more other users;
receiving, by the synchronization server, a notification of a change to the data object from a client device from the first set of client devices associated with the user;
in response to receiving the notification to the change to the data object from the client device and prior to receiving user input to publish the change to the data object, sending, by the synchronization server, the notification of the change to the data object to other client devices from the first set of client devices associated with the user but not to the second set of client devices;
determining, by the synchronization server, that the user provided input to publish the change to the data object; and
sending, by the synchronization server, the notification of the change to the second set of client devices associated with the one or more other users based on receiving the notification of the change to the data object and determining that the user provided input to publish the change to the data object.

### Claim 2 (depends on 1)

The method of claim 1, further comprising enabling the one or more other users to access the copy of the data object on the synchronization server.

### Claim 3 (depends on 1)

The method of claim 1, further comprising enabling at least one user of the one or more other users to access the copy of the data object by downloading the copy of the data object to at least one client device from the second set of client devices.

### Claim 4 (depends on 1)

The method of claim 1, wherein the data object is a file.

### Claim 5 (depends on 4)

The method of claim 4, wherein the file is one of a photo, audio file, video file, or document.

### Claim 6

A non-transitory computer readable storage medium comprising instructions that, when executed by at least one processor, cause thea computing device to:
maintain a copy of a data object shared with a first set of client devices associated with a user and a second set of client devices associated with one or more other users;
receive a notification of a change to the data object from a client device from the first set of client devices associated with the user;
in response to receiving the notification of the change to the data object from the client device and prior to receiving user input to publish the change to the data object, send the notification of the change to the data object to other client devices from the first set of client devices associated with the user but not to the second set of client devices;
determine that the user provided input to publish the change to the data object; and
send the notification of the change to the second set of client devices associated with the one or more other users based on receiving the notification of the change to the data object and determining that the user provided input to publish the change to the data object.

### Claim 7 (depends on 6)

The non-transitory computer readable storage medium of claim 6, further comprising instructions that, when executed by the at least one processor, cause the computing device to enable the one or more other users to access the copy of the data object on a synchronization server.

### Claim 8 (depends on 6)

The non-transitory computer readable storage medium of claim 6, further comprising instructions that, when executed by the at least one processor, cause the computing device to enable at least one user of the one or more other users to access the copy of the data object by downloading the copy of the data object to at least one client device from the second set of client devices.

### Claim 9 (depends on 6)

The non-transitory computer readable storage medium of claim 6, wherein the data object is a file.

### Claim 10 (depends on 9)

The non-transitory computer readable storage medium of claim 9, wherein the file is one of a photo, audio file, video file, or document.

### Claim 11

A system comprising:
at least one processor; and
a non-transitory computer-readable storage medium comprising instructions that, when executed by the at least one processor, cause the system to:
maintain a copy of a data object shared with a first set of client devices associated with a user and a second set of client devices associated with one or more other users;
receive a notification of a change to the data object from a client device from the first set of client devices associated with the user;
in response to receiving the notification of the change to the data object from the client device and prior to receiving user input to publish the change to the data object, send the notification of the change to the data object to other client devices from the first set of client devices associated with the user but not to the second set of client devices;
determine that the user provided input to publish the change to the data object; and
send the notification of the change to the second set of client devices associated with the one or more other users based on receiving the notification of the change to the data object and determining that the user provided input to publish the change to the data object.

### Claim 12 (depends on 11)

The system of claim 11, further comprising instructions that, when executed by the at least one processor, cause the system to enable the one or more other users to access the copy of the data object on a synchronization server.

### Claim 13 (depends on 11)

The system of claim 11, further comprising instructions that, when executed by the at least one processor, cause the system to enable at least one user of the one or more other users to access the copy of the data object by downloading the copy of the data object to at least one client device from the second set of client devices.

### Claim 14

A method for synchronizing and sharing data objects, the method comprising:
maintaining, by a synchronization server, a copy of a data object shared with a first group of client devices associated with a user and a second group of client devices associated with one or more other users;
receiving, by the synchronization server, a notification of a change to the data object from a client device from the first group of client devices associated with the user;
in response to receiving the notification of the change to the data object from the client device and prior to receiving user input to publish the change to the data object, sending, by the synchronization server, the notification of the change to the data object to other client devices from the first group of client devices associated with the user and a first subset of the second group of client devices associated with the one or more other users but not to a second subset of the second group of client devices;
determining, by the synchronization server, that the user provided input to publish the change to the data object; and
sending, by the synchronization server, the notification of the change to the second subset of the second group of client devices associated with the one or more other users based on receiving the notification of the change to the data object and determining that the user did provide input to publish the change to the data object.

### Claim 15 (depends on 14)

The method of claim 14, further comprising enabling the one or more other users to access the copy of the data object on the synchronization server.

### Claim 16 (depends on 14)

The method of claim 14, further comprising enabling the one or more other users to access the copy of the data object by downloading the copy of the data object to the second group of client devices.

### Claim 17 (depends on 1)

The method of claim 1, wherein receiving, by the synchronization server, the notification of the change to the data object from the client device from the first set of client devices associated with the user comprises receiving the notification of the change during a first login session; and
further comprising, prior to receiving input to publish the change to the data object, enabling the user to access the change to the data object during a second login session.

### Claim 18 (depends on 6)

The non-transitory computer readable storage medium of claim 6, wherein the instructions, when executed by the at least one processor, cause the computing device to receive the notification of the change to the data object from the client device from the first set of client devices associated with the user by receiving the notification of the change during a first login session; and
further comprising instructions that, when executed by the at least one processor, cause the computing device to, prior to receiving input to publish the change to the data object, enable the user to access the change to the data object during a second login session.

### Claim 19 (depends on 11)

The system of claim 11, wherein the instructions, when executed by the at least one processor, cause the system to receive the notification of the change to the data object from the client device from the first set of client devices associated with the user by receiving the notification of the change during a first login session; and
further comprising instructions that, when executed by the at least one processor, cause the system to, prior to receiving input to publish the change to the data object, enable the user to access the change to the data object during a second login session.

### Claim 20 (depends on 11)

The system of claim 11, wherein the data object is one of a photo, audio file, video file, or document.
