1. A system for efficient building of a restore list, comprising: a processor, wherein the processor is configured to: receive a desired directory path to restore and to push the desired directory path onto the directory stack; create directory index records comprising: for each directory in a directory stack: retrieve a directory index associated with a first backup file from at least a subset of backup files that includes full backup files and incremental backup files; add one or more files or directories in the directory index of the first backup file to the directory index records if not already present; determine whether the first backup file is a full backup file or an incremental backup file; in the event that the first backup file is determined to be an incremental backup file, repeat retrieving a next most recent incremental backup file and adding one or more files or directories of the next most recent incremental backup file to the directory index records if not already present until a full backup file is reached; create a restore list from the directory index records comprising: for each record in the directory index records: determine whether the record is a directory or a file; in the event that the record is determined to be directory, push the directory associated with the record to the directory stack; in the event that the record is determined to be a file, add an index record associated with the file to the restore list, wherein the index record comprises a file name indicator and a file location in a backup file where the file is stored in, wherein the file location in the backup file with the file name indicator comprises a file start point and a file length; for each index record associated with the file added to the restore list: determine whether the file is adjacent to another file in the restore list, wherein the file is adjacent to another file if they are from the same backup file and are stored adjacently in the same backup file; in the event the file is adjacent to another file in the restore list, coalesce the file and the another file in the restore list, wherein coalescing the file comprises combining the file locations to create a single file location reference in the same backup file, wherein combining the file locations comprises a new file start point and a new file length, wherein the new file start point comprises a start point of the file and the another file that are adjacent and the new file length comprises the sum of the file length of the file and the another file that are adjacent; and a memory coupled to the processor and configured to provide the processor with instructions.