Patent ID: 8195623

Claim:
A method performed by one or more computing systems, each computing system having a processor and memory, of restoring data, the method comprising: receiving, via a user interface, a selection of a given point in time to which to restore a portion of an information store on at least one first storage device, wherein multiple snapshots have been made of the information store prior to or near to the given point in time, and wherein the snapshots are stored on at least one remote storage device that is remotely located from the first storage device and wherein snapshots taken after an initial snapshot comprise: changed data from at least one storage block of the information store, wherein the changed data contains data that has been changed or created since the time a most-recently made previous snapshot was created, a first data structure identifying the at least one storage block, a second data structure indicating a physical location of the changed data within the remote storage device, a third data structure mapping the at least one storage block to one or more files associated with the changed data, and a fourth data structure identifying a previous snapshot containing data from the at least one storage block; identifying a first set of two or more snapshots, wherein each snapshot in the first set indexes storage blocks associated with the portion of the information store to be restored; determining a most-recently made snapshot in the first set necessary to restore the portion of the information store; determining one or more snapshots in the first set, other than the most-recently made snapshot, necessary to restore the portion of the information store; restoring, by the one or more computer systems, storage blocks associated with the portion of the information store that are indexed by the most-recently made snapshot; and after restoring the storage blocks associated with the portion of the information store that are indexed by the most-recently made snapshot, restoring, by the one or more computer systems, storage blocks that are not already restored and that are associated with the portion of the information store indexed by the one or more other snapshots, wherein the restoring is performed in reverse chronological order of times at which the one or more other snapshots were made, and wherein the determining a most-recently made snapshot and the determining one or more snapshots in the first set includes reviewing the at least one snapshot to identify changed blocks or files within the information store.