Patent ID: 8924360

Claim:
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.