IP Library Granted Patent US 8,924,360
Granted Patent B1
US 8,924,360 · App. 12/895,275 · Granted Dec 30, 2014

Systems and methods for restoring a file

Inventor: Vito Caputo (Wheaton, IL)
Assignee: Axcient, Inc.
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,924,360
App. No.
12/895,275
Granted
Dec 30, 2014
Kind
B1
Abstract

Systems and methods for restoring files and metadata records associated with files are provided herein. Some of the methods include identifying a version of the file, evaluating one or more reverse incremental delta increments, and restoring an arbitrary version of the file based on an arbitrary time reference by assembling the arbitrary version of the file based on the one or more reverse incremental delta increments.

Claims (53)

1. A method for restoring a file, the method comprising:

identifying a version of the file;

opening a plurality of reverse incremental delta increments such that they are open at the same time, the reverse incremental delta increments associated with the identified version of the file, the reverse incremental delta increments including a prime delta increment being temporally adjacent and subsequent to an arbitrary time reference and a most recent delta increment;

creating sparse indexes of the reverse incremental delta increments during runtime, each sparse index indicative of offsets and lengths of literal and inherited blocks of data;

evaluating the reverse incremental delta increments using the sparse indexes for blocks of data comprising the literal blocks and inherited blocks, each of the literal blocks comprising an indication of data that has changed since the creation of a temporally adjacent reverse incremental delta increment, each of the inherited blocks comprising metadata indicating a block of data to be inherited that has not changed since creation of a previous reverse incremental delta increment, the metadata comprising an offset and a length of a block of data to be inherited; and

restoring an arbitrary version of the file based on the arbitrary time reference according to the sparse indexes by:

analyzing each of the reverse incremental delta increments in reverse chronological order based on metadata beginning with metadata from the most recent delta increment and ending with metadata from the prime delta increment,

identifying blocks of data inherited backwards in time through each of the analyzed reverse incremental delta increments in turn to a literal block of data,

copying the literal blocks of data upon being identified as inherited blocks of data into the arbitrary version of the file, and

combining the literal blocks of data identified as inherited blocks of data with literal blocks of data not identified from the reverse incremental delta increments as inherited blocks of data into the arbitrary version of the file.

2. The method according to claim 1 , wherein restoring includes parsing each of the reverse incremental delta increments to determine the offsets and lengths of the blocks to be inherited.

3. The method according to claim 1 , wherein the reverse incremental delta increments are created according to a user-defined schedule.

4. The method according to claim 1 , wherein at least one of the reverse incremental delta increments comprise a current mirror of the file.

5. The method according to claim 2 , wherein parsing includes creating a sparse index for each of the reverse incremental delta increments during runtime, each sparse index indicative of the offsets and lengths of the literal and inherited blocks of data of at least one of a reverse incremental delta increment and a version of the file, the sparse index being stored in memory.

6. The method according to claim 5 , wherein parsing includes recursively and iteratively parsing the reverse incremental delta increments to determine the offsets and lengths of the literal and inherited blocks of data of each of the reverse incremental delta increments.

7. The method according to claim 5 , wherein evaluating includes utilizing the sparse indexes to determine a location of one or more inherited blocks of data relative to one or more temporally adjacent reverse incremental delta increments.

8. The method according to claim 1 , wherein if evaluating permits an incomplete mapping of the reverse incremental delta increments, unresolved inherited blocks of data are evaluated.

9. The method according to claim 1 , wherein if evaluating does not permit an incomplete mapping of the reverse incremental delta increments, the method terminates upon locating an unresolved inherited block of data.

10. The method according to claim 1 , wherein evaluating further includes opening and generating a sparse run-time index for each reverse incremental delta increment.

11. The method according to claim 1 , further comprising communicating the restored file to a user device.

12. A system for restoring a file, the system comprising:

a server, the server coupled to a network and one or more user devices requesting the restoration of the file via the network, the server including a processor comprising:

a file locator module for identifying a version of the file and reverse incremental delta increments, the reverse incremental delta increments associated with the identified version of the file, the reverse incremental delta increments including a prime delta increment being temporally adjacent and subsequent to an arbitrary time reference and a most recent reverse incremental delta increment;

a parsing module for:

opening a plurality of the reverse incremental delta increments such that they are all open at the same time,

creating sparse indexes of the reverse incremental delta increments during runtime, each sparse index indicative of offsets and lengths of literal and inherited blocks of data, and

evaluating the reverse incremental delta increments using the sparse indexes for blocks of data comprising the literal blocks and inherited blocks, each of the literal blocks comprising an indication of data that has changed since the creation of a temporally adjacent reverse incremental delta increment, each of the inherited blocks comprising metadata indicating a block of data to be inherited that has not changed since creation of a previous reverse incremental delta increment, the metadata comprising an offset and a length of a block of data to be inherited; and

a restoration engine for restoring an arbitrary version of the file based on the arbitrary time reference according to the sparse indexes by:

analyzing each of the reverse incremental delta increments in reverse chronological order based on metadata beginning with metadata from the most recent delta increment and ending with metadata from the prime delta increment,

identifying blocks of data inherited backwards in time through each of the analyzed reverse incremental delta increments in turn to a literal block of data,

copying the literal blocks of data identified as inherited blocks of data into the arbitrary version of the file, and

combining the literal blocks of data identified as inherited blocks of data with literal blocks of data not identified from the reverse incremental delta increments as inherited blocks of data into the arbitrary version of the file.

13. The system according to claim 12 , wherein the restoration engine is adapted to parse each of the reverse incremental delta increments to determine the offsets and lengths of the blocks to be inherited.

14. The system according to claim 12 , wherein the parsing module is adapted to create a sparse index of each of the reverse incremental delta increments during runtime, each sparse index indicative of the offsets and lengths of the literal and inherited blocks of data of at least one of a reverse incremental delta increment and a version of the file, the sparse index being stored in memory.

15. The system according to claim 14 , wherein the parsing module is adapted to recursively and iteratively parse the reverse incremental delta increments to determine the offsets and lengths of the literal and inherited blocks of data of each of the reverse incremental delta increments.

16. The system according to claim 15 , wherein the restoration engine is adapted to utilize the sparse indexes to determine a location of one or more inherited blocks of data relative to one or more temporally adjacent reverse incremental delta increments.

17. The system according to claim 12 , wherein if the parsing module is adapted to generate an incomplete mapping of the reverse incremental delta increments, unresolved inherited blocks of data are evaluated by the parsing module.

18. The system according to claim 12 , wherein if the parsing module is adapted to permit an incomplete mapping of the reverse incremental delta increments, the parsing module is adapted to terminate mapping upon locating an unresolved inherited block of data.

19. The system according to claim 12 , wherein the parsing module is adapted to open and generate a sparse run-time index for each reverse incremental delta increment.

20. The system according to claim 12 , further including a backup scheduling module adapted to receive information indicative of a user-defined backup schedule.

21. The system according to claim 20 , further comprising a data gathering module adapted to create the reverse incremental delta increments according to a user-defined schedule established by the backup scheduling module.

22. The system according to claim 21 , wherein at least one of the reverse incremental delta increments created by the data gathering module comprises a current mirror of the file.

23. The system according to claim 12 , wherein the restoration engine is adapted to communicate the restored file to one or more user devices requesting the restoration of the file.

24. A method for restoring a file, the method comprising:

identifying a version of the file;

locating and opening a plurality of reverse incremental delta increments such that they are open at the same time, the reverse incremental delta increments associated with the identified version of the file, the reverse incremental delta increments including a prime delta increment being temporally adjacent and subsequent to an arbitrary time reference and a most recent delta increment, each of the reverse incremental delta increments including sparse indexes created during runtime, the sparse indexes indicative of offsets and lengths of literal and inherited blocks of data;

evaluating the reverse incremental delta increments using the sparse indexes for blocks of data comprising the literal blocks and inherited blocks, each of the literal blocks comprising an indication of data that has changed since the creation of a temporally adjacent reverse incremental delta increment, each of the inherited blocks comprising metadata indicating a block of data to be inherited that has not changed since creation of a previous reverse incremental delta increment, the metadata comprising an offset and a length of a block to be inherited; and

restoring an arbitrary version of the file according to the sparse indexes to the arbitrary time reference by:

placing the reverse incremental delta increments in chronological order;

analyzing each of the reverse incremental delta increments in reverse chronological order based on metadata beginning with metadata from the most recent delta increment and ending with metadata from the prime delta increment,

identifying blocks of data inherited backwards in time through each of the analyzed reverse incremental delta increments in turn to a literal block of data,

copying the literal blocks of data identified as later inherited blocks of data into the arbitrary version of the file, and

combining the literal blocks of data identified as later inherited blocks of data with literal blocks of data not identified from the reverse incremental delta increments as inherited blocks of data into the arbitrary version of the file.

Assignments (14)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 19, 2025
From: SKYKICK, LLC; EFOLDER, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 070268/0489 →
RELEASE OF SECURITY INTEREST Recorded Sep 24, 2024
From: U.S. BANK NATIONAL ASSOCIATION FORMERLY MUFG UNION BANK, N.A.
To: EFOLDER, INC.
Reel/Frame 068680/0802 →
RELEASE OF SECURITY INTEREST Recorded Nov 2, 2022
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: EFOLDER, INC.
Reel/Frame 061634/0623 →
SECURITY INTEREST Recorded Oct 27, 2022
From: EFOLDER, INC.
To: MUFG UNION BANK, N.A.
Reel/Frame 061559/0703 →
SECURITY INTEREST Recorded Jan 8, 2018
From: EFOLDER, INC.
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 044563/0633 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2017
From: AXCIENT HOLDINGS, LLC
To: EFOLDER, INC.
Reel/Frame 044370/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2017
From: AXCIENT, INC.
To: AXCI (AN ABC) LLC
Reel/Frame 044367/0507 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2017
From: AXCI (AN ABC) LLC
To: AXCIENT HOLDINGS, LLC
Reel/Frame 044368/0556 →
RELEASE OF SECURITY INTEREST Recorded Oct 11, 2017
From: STRUCTURED ALPHA LP
To: AXCIENT, INC.
Reel/Frame 043840/0227 →
RELEASE OF SECURITY INTEREST Recorded Jul 26, 2017
From: SILVER LAKE WATERMAN FUND, L.P.
To: AXCIENT, INC.
Reel/Frame 043106/0389 →
SECURITY INTEREST Recorded Jun 2, 2017
From: AXCIENT, INC.
To: SILVER LAKE WATERMAN FUND, L.P.
Reel/Frame 042577/0901 →
SECURITY INTEREST Recorded May 31, 2017
From: AXCIENT, INC.
To: STRUCTURED ALPHA LP
Reel/Frame 042542/0364 →
CHANGE OF ADDRESS Recorded Oct 14, 2014
From: AXCIENT, INC.
To: AXCIENT, INC.
Reel/Frame 033987/0748 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2010
From: CAPUTO, VITO
To: AXCIENT, INC.
Reel/Frame 025074/0429 →