1. A method for protecting data on a non-transitory storage device, the method comprising: parsing a virtual machine snapshot to identify a virtual machine master file table (“MFT”); parsing the MFT into file information; saving the file information in a database comprising keys and metadata records, wherein a metadata record includes a file name, a start version, an end version, a timestamp, and a snapshot file taken at the timestamp; using a directory to identify keys in the database, wherein the keys comprise directories from virtual machine snapshot and the metadata records in the database comprise both directories and the snapshot files from the virtual file system; walking through each identified key to identify metadata records; identifying a first file based on the walk through, wherein the identifying of the first file comprises: determining the first file has at least two different corresponding metadata records including an earlier metadata record and a current metadata record, wherein: the earlier metadata record includes a start version of the first file having the same value as an end version of the first file, and a timestamp corresponding to the time the first file was backed up; the current metadata record includes a start version of the first file being different from an end version of the first file, and a timestamp corresponding to the time the first file was backed up; and the timestamp of the earlier metadata record being earlier than the timestamp of the current metadata record; and determining whether the first file was present during the most recent backup, comprising: determining whether a reference flag relating to the first file has been set to correspond to the current version of the first file; and in the event that the reference flag relating to the first file has not been set to correspond to the current version of the first file and the first file was modified between the most recent backup and the previous backup, determining the first file is not present during the most recent backup; selecting a specific version of the first file; and restoring the selected first file to a storage device.