IP Library Granted Patent US 11,360,943
Granted Patent B2
US 11,360,943 · App. 16/892,539 · Granted Jun 14, 2022

Unified file storage system

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 11,360,943
App. No.
16/892,539
Filed
Jun 4, 2020
Granted
Jun 14, 2022
Kind
B2
Art Unit
2161
USPC
707/626
Abstract

A computing system may store a first file in a system repository that is to be synchronized with at least a first repository associated with a first client device and a second repository associated with a second client device. The computing system may determine that the first repository is to receive a downloaded copy of at least a portion of the first file, and may cause a copy of the at least a portion of the first file to be downloaded from the system repository to the first repository. Based at least in part on the computing system determining that the first repository is to receive the downloaded copy, an identifier of the at least a portion of first file may be stored in the second repository without storing a copy of the at least a portion of the first file in the second repository.

Claims (100)

1. A method, comprising:

storing, by a computing system, a first file in a system repository that is to be synchronized with at least a first repository associated with a first client device and a second repository associated with a second client device;

determining, by the computing system, first data indicative of at least one of a file type of the first file, a purpose of the first file, or a content type of the first file;

determining, by the computing system, second data indicative of at least one of a device type of the first client device, a purpose of the first client device, a percentage of time the first client device is used relative to other client devices, or a current available bandwidth between the first client device and the system repository;

determining, by the computing system, third data indicative of at least one of a device type of the second client device, a purpose of the second client device, a percentage of time the second client device is used relative to other client devices, or a current available bandwidth between the second client device and the system repository;

determining, by the computing system and based at least in part on the first data, the second data, and the third data, that the first client device is more likely to be used to access the first file than the second client device;

determining, by the computing system and based at least in part on the first client device being more likely to be used to access the first file than the second client device, that the first repository is to receive a downloaded copy of at least a portion of the first file;

causing, by the computing system, a copy of the at least a portion of the first file to be downloaded from the system repository to the first repository; and

based at least in part on the computing system determining that the first repository is to receive the downloaded copy, causing an identifier of the at least a portion of first file to be stored in the second repository without storing a copy of the at least a portion of the first file in the second repository.

2. The method of claim 1 , further comprising:

storing, by the computing system, a second file in the system repository;

determining, by the computing system, that the second client device is more likely to be used to access the second file than the first client device;

determining, by the computing system and based at least in part on the second client device being more likely to be used to access the second file than the first client device, that the second repository is to receive a downloaded copy of at least a portion of the second file;

causing, by the computing system, a copy of the at least a portion of the second file to be downloaded from the system repository to the second repository; and

based at least in part on the computing system determining that the second repository is to receive the downloaded copy, causing an identifier of the at least a portion of the second file to be stored in the first repository without storing a copy of the at least a portion of the second file in the first repository.

3. The method of claim 1 , further comprising:

receiving, by the computing system, a request to upload a copy of the first file to the system repository; and

receiving, by the computing system, an indication that the uploaded copy of the first file is to be assigned to the first client device;

wherein determining that the first repository is to receive the downloaded copy is based at least in part on the received indication.

4. The method of claim 1 , further comprising:

determining, by the computing system, at least one preference of a user, the at least one preference indicating that files having a first set of one or more characteristics are to be assigned to the first client device; and

determining, by the computing system, that the first file has the first set of one or more characteristics;

wherein determining that the first repository is to receive the downloaded copy of the first file is based at least in part on the first file having the first set of one or more characteristics.

5. The method of claim 1 , further comprising:

storing, by the computing system, a second file in the system repository;

determining, by the computing system, that the first client device is more likely to be used to access the second file than the second client device;

determining, by the computing system and based at least in part on the first client device being more likely to be used to access the second file than the second client device, that the first repository is to receive a downloaded copy of at least a portion of the second file;

determining, by the computing system, that the first repository has insufficient storage space to accommodate an entirety of the second file;

causing, by the computing system and based at least in part on the first repository having insufficient storage space to accommodate the entirety of the second file, the second file to be split into at least first and second portions;

causing, by the computing system, a copy of the first portion to be downloaded from the system repository to the first repository; and

causing, by the computing system, a copy of the second portion to be downloaded from the system repository to the second repository.

6. The method of claim 1 , further comprising:

after the identifier has been stored in the second repository, determining that access to the at least a portion of the first file by the second client device is sought; and

in response to determining that access to the at least a portion of the first file by the second client device is sought, causing the second client device to output an indication that a copy of the at least a portion of the first file is stored in the first repository.

7. The method of claim 1 , further comprising:

after the identifier has been stored in the second repository, determining that access to the at least a portion of the first file by the second client device is sought; and

in response to determining that access to the at least a portion of the first file by the second client device is sought, causing the second client device to present at least one option for a user of the second client device to cause the at least a portion of the first file to be made accessible to the second client device.

8. A computing system, comprising:

at least one processor; and

at least one non-transitory computer-readable medium encoded with instructions which, when executed by the at least one processor, cause the computing system to:

store a first file in a system repository that is to be synchronized with at least a first repository associated with a first client device and a second repository associated with a second client device,

determine first data indicative of at least one of a file type of the first file, a purpose of the first file, or a content type of the first file,

determine second data indicative of at least one of a device type of the first client device, a purpose of the first client device, a percentage of time the first client device is used relative to other client devices, or a current available bandwidth between the first client device and the system repository,

determine third data indicative of at least one of a device type of the second client device, a purpose of the second client device, a percentage of time the second client device is used relative to other client devices, or a current available bandwidth between the second client device and the system repository,

determine, based at least in part on the first data, the second data, and the third data, that the first client device is more likely to be used to access the first file than the second client device,

determine, based at least in part on the first client device being more likely to be used to access the first file than the second client device, that the first repository is to receive a downloaded copy of at least a portion of the first file,

cause a copy of the at least a portion of the first file to be downloaded from the system repository to the first repository, and

cause, based at least in part on the computing system determining that the first repository is to receive the downloaded copy, an identifier of the at least a portion of first file to be stored in the second repository without storing a copy of the at least a portion of the first file in the second repository.

9. The computing system of claim 8 , wherein the at least one non-transitory computer-readable medium is encoded with additional instructions which, when executed by the at least one processor, further cause the computing system to:

store a second file in the system repository;

determine that the second client device is more likely to be used to access the second file than the first client device;

determine, based at least in part on the second client device being more likely to be used to access the second file than the first client device, that the second repository is to receive a downloaded copy of at least a portion of the second file;

cause a copy of the at least a portion of the second file to be downloaded from the system repository to the second repository; and

cause, based at least in part on the computing system determining that the second repository is to receive the downloaded copy, an identifier of the at least a portion of the second file to be stored in the first repository without storing a copy of the at least a portion of the second file in the first repository.

10. The computing system of claim 8 , wherein the at least one non-transitory computer-readable medium is encoded with additional instructions which, when executed by the at least one processor, further cause the computing system to:

receive a request to upload a copy of the first file to the system repository;

receive an indication that the uploaded copy of the first file is to be assigned to the first client device; and

determine that the first repository is to receive the downloaded copy based at least in part on the received indication.

11. The computing system of claim 8 , wherein the at least one non-transitory computer-readable medium is encoded with additional instructions which, when executed by the at least one processor, further cause the computing system to:

determine at least one preference of a user, the at least one preference indicating that files having a first set of one or more characteristics are to be assigned to the first client device;

determine that the first file has the first set of one or more characteristics; and

determine that the first repository is to receive the downloaded copy of the first file based at least in part on the first file having the first set of one or more characteristics.

12. The computing system of claim 8 , wherein the at least one non-transitory computer-readable medium is encoded with additional instructions which, when executed by the at least one processor, further cause the computing system to:

store a second file in the system repository;

determine that the first client device is more likely to be used to access the second file than the second client device;

determine, based at least in part on the first client device being more likely to be used to access the second file than the second client device, that the first repository is to receive a downloaded copy of at least a portion of the second file;

determine that the first repository has insufficient storage space to accommodate an entirety of the second file;

cause, based at least in part on the first repository having insufficient storage space to accommodate the entirety of the second file, the second file to be split into at least first and second portions;

cause a copy of the first portion to be downloaded from the system repository to the first repository; and

cause a copy of the second portion to be downloaded from the system repository to the second repository.

13. The computing system of claim 8 , wherein the at least one non-transitory computer-readable medium is encoded with additional instructions which, when executed by the at least one processor, further cause the computing system to:

after the identifier has been stored in the second repository, determine that access to the at least a portion of the first file by the second client device is sought; and

cause, in response to determining that access to the at least a portion of the first file by the second client device is sought, the second client device to output an indication that a copy of the at least a portion of the first file is stored in the first repository.

14. The computing system of claim 8 , wherein the at least one non-transitory computer-readable medium is encoded with additional instructions which, when executed by the at least one processor, further cause the computing system to:

after the identifier has been stored in the second repository, determine that access to the at least a portion of the first file by the second client device is sought; and

cause, in response to determining that access to the at least a portion of the first file by the second client device is sought, the second client device to present at least one option for a user of the second client device to cause the at least a portion of the first file to be made accessible to the second client device.

15. At least one non-transitory computer-readable medium encoded with instructions which, when executed by at least one processor of a computing system, cause the computing system to:

store a first file in a system repository that is to be synchronized with at least a first repository associated with a first client device and a second repository associated with a second client device;

determine first data indicative of at least one of a file type of the first file, a purpose of the first file, or a content type of the first file;

determine second data indicative of at least one of a device type of the first client device, a purpose of the first client device, a percentage of time the first client device is used relative to other client devices, or a current available bandwidth between the first client device and the system repository;

determine third data indicative of at least one of a device type of the second client device, a purpose of the second client device, a percentage of time the second client device is used relative to other client devices, or a current available bandwidth between the second client device and the system repository;

determine, based at least in part on the first data, the second data, and the third data, that the first client device is more likely to be used to access the first file than the second client device;

determine, based at least in part on the first client device being more likely to be used to access the first file than the second client device, that the first repository is to receive a downloaded copy of at least a portion of the first file;

cause a copy of the at least a portion of the first file to be downloaded from the system repository to the first repository; and

cause, based at least in part on the computing system determining that the first repository is to receive the downloaded copy, an identifier of the at least a portion of first file to be stored in the second repository without storing a copy of the at least a portion of the first file in the second repository.

16. The at least one non-transitory computer-readable medium of claim 15 , further encoded with additional instructions which, when executed by the at least one processor, further cause the computing system to:

store a second file in the system repository;

determine that the second client device is more likely to be used to access the second file than the first client device;

determine, based at least in part on the second client device being more likely to be used to access the second file than the first client device, that the second repository is to receive a downloaded copy of at least a portion of the second file;

cause a copy of the at least a portion of the second file to be downloaded from the system repository to the second repository; and

cause, based at least in part on the computing system determining that the second repository is to receive the downloaded copy, an identifier of the at least a portion of the second file to be stored in the first repository without storing a copy of the at least a portion of the second file in the first repository.

17. The method of claim 1 , wherein the first data is indicative of the file type of the first file.

18. The method of claim 1 , wherein the first data is indicative of the purpose of the first file.

19. The method of claim 1 , wherein the first data is indicative of the content type of the first file.

20. The method of claim 1 , wherein:

the second data is indicative of the device type of the first client device; and

the third data is indicative of the device type of the second client device.

21. The method of claim 1 , wherein:

the second data is indicative of the purpose of the first client device; and

the third data is indicative of the purpose of the second client device.

Assignments (7)
SECURITY INTEREST Recorded Jul 21, 2025
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 072094/0790 →
SECURITY INTEREST Recorded Dec 26, 2024
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 069784/0578 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2024
From: CITRIX SYSTEMS, INC.
To: PROGRESS SOFTWARE CORPORATION
Reel/Frame 069571/0001 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 067662/0568 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 069291/0525 →
RELEASE OF CERTAIN PATENT SECURITY INTERESTS AT REEL/FRAME 062079/0001 Recorded Nov 2, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: CITRIX SYSTEMS, INC.
Reel/Frame 069291/0536 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →