Efficient building of restore list
First Claim
1. A system for building a restore list for a restore, comprising:
- a processor configured to;
determine a root directory and a time of a restore;
receive a directory index for the root directory, wherein the content of the directory index is determined from a most recent incremental backup of the root directory at the time of the restore;
add subdirectories in the directory index to a list of directories to traverse; and
add one or more files in the directory index to a restore list in response to the one or more files being not already present on the restore list, comprising;
selecting a file of the one or more files in the directory index;
determining whether the file is already present on the restore list, and in response to the file being not already present on the restore list, adding the file to the restore list, wherein the restore list is ordered by a storage location of each backup file associated with a file in the restore list, and comprises a backup version the file is stored in, an offset within the backup version, and a file size; and
determining whether the file and another file in the restore list are stored adjacently in a same backup version, and in response to the file and the another file being stored adjacently in the same backup version as the file is added to the restore list or after at least a portion of the restore list has been built, determining a coalesced file offset as either a file offset of the file or as another file offset of the another file and a coalesced file size to be the sum of a file size of the file and another file size of the another file; and
removing one of the subdirectories on the list of directories to traverse from the list of directories to traverse after processing;
in response to the list of directories to traverse being empty, indicating that the entire root directory structure for the incremental backup of the root directory has been traversed; and
creating a synthetic full backup of data in the root directory at the time of the restore based at least in part on the restore list; and
a memory coupled to the processor and configured to provide the processor with instructions.
9 Assignments
0 Petitions
Accused Products
Abstract
A system for building a restore list for a restore includes a processor and a memory. The processor is configured to determine whether a next sibling record of a directory index record of a root directory includes a subdirectory or a file, wherein the content of the directory index is determined from an incremental backup of the root directory. In the event that the next sibling record comprises a subdirectory of the root directory, the processor is configured to push a directory path associated with the next sibling record onto a directory stack. In the event that the next sibling record comprises a file, the processor is configured to add the latest index record associated with the file to a restore list in the event that the file is not already in the restore list. The restore list is provided for a restore of the state of data of the root directory at a desired time.
20 Citations
19 Claims
-
1. A system for building a restore list for a restore, comprising:
-
a processor configured to; determine a root directory and a time of a restore; receive a directory index for the root directory, wherein the content of the directory index is determined from a most recent incremental backup of the root directory at the time of the restore; add subdirectories in the directory index to a list of directories to traverse; and add one or more files in the directory index to a restore list in response to the one or more files being not already present on the restore list, comprising; selecting a file of the one or more files in the directory index; determining whether the file is already present on the restore list, and in response to the file being not already present on the restore list, adding the file to the restore list, wherein the restore list is ordered by a storage location of each backup file associated with a file in the restore list, and comprises a backup version the file is stored in, an offset within the backup version, and a file size; and determining whether the file and another file in the restore list are stored adjacently in a same backup version, and in response to the file and the another file being stored adjacently in the same backup version as the file is added to the restore list or after at least a portion of the restore list has been built, determining a coalesced file offset as either a file offset of the file or as another file offset of the another file and a coalesced file size to be the sum of a file size of the file and another file size of the another file; and removing one of the subdirectories on the list of directories to traverse from the list of directories to traverse after processing; in response to the list of directories to traverse being empty, indicating that the entire root directory structure for the incremental backup of the root directory has been traversed; and creating a synthetic full backup of data in the root directory at the time of the restore based at least in part on the restore list; and a memory coupled to the processor and configured to provide the processor with instructions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method for building a restore list for a restore, comprising:
-
determining, using a processor, a root directory and a time of a restore; receiving a directory index for the root directory, wherein the content of the directory index is determined from a most recent incremental backup of the root directory at the time of the restore; adding subdirectories in the directory index to a list of directories to traverse; and adding one or more files in the directory index to a restore list in response to the one or more files being not already present on the restore list, comprising; selecting a file of the one or more files in the directory index; determining whether the file is already present on the restore list, and in response to the file being not already present on the restore list, adding the file to the restore list, wherein the restore list is ordered by a storage location of each backup file associated with a file in the restore list, and comprises a backup version the file is stored in, an offset within the backup version, and a file size; and determining whether the file and another file in the restore list are stored adjacently in a same backup version, and in response to the file and the another file being stored adjacently in the same backup version as the file is added to the restore list or after at least a portion of the restore list has been built, determining a coalesced file offset as either a file offset of the file or as another file offset of the another file and a coalesced file size to be the sum of a file size of the file and another file size of the another file; and removing one of the subdirectories on the list of directories to traverse from the list of directories to traverse after processing; in response to the list of directories to traverse being empty, indicating that the entire root directory structure for the incremental backup of the root directory has been traversed; and creating a synthetic full backup of data in the root directory at the time of the restore based at least in part on the restore list.
-
-
19. A computer program product for building a restore list for a restore, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
-
determining, using a processor, a root directory and a time of a restore; receiving a directory index for the root directory, wherein the content of the directory index is determined from a most recent incremental backup of the root directory at the time of the restore; adding subdirectories in the directory index to a list of directories to traverse; and adding one or more files in the directory index to a restore list in response to the one or more files being not already present on the restore list, comprising; selecting a file of the one or more files in the directory index; determining whether the file is already present on the restore list, and in response to the file being not already present on the restore list, adding the file to the restore list, wherein the restore list is ordered by a storage location of each backup file associated with a file in the restore list, and comprises a backup version the file is stored in, an offset within the backup version, and a file size; and determining whether the file and another file in the restore list are stored adjacently in a same backup version, and in response to the file and the another file being stored adjacently in the same backup version as the file is added to the restore list or after at least a portion of the restore list has been built, determining a coalesced file offset as either a file offset of the file or as another file offset of the another file and a coalesced file size to be the sum of a file size of the file and another file size of the another file; and removing one of the subdirectories on the list of directories to traverse from the list of directories to traverse after processing; in response to the list of directories to traverse being empty, indicating that the entire root directory structure for the incremental backup of the root directory has been traversed; and creating a synthetic full backup of data in the root directory at the time of the restore based at least in part on the restore list.
-
Specification