Patent ID: 8374999

Claim:
A method comprising performing a plurality of passes to deduplicate a data object, by a process being executed by a computing device, wherein performing each pass comprises: starting a transaction; where an offset into the data object has previously been set, retrieving the offset into the data object; where the offset into the data object has not yet been set, setting the offset into the data object to reference a beginning of the data object; deduplicating a portion of the data object beginning at the offset into the data object until one of a plurality of end-of-transaction criteria has been satisfied; ending the transaction to commit deduplication of the portion of the data object; and, where the data object has not yet been completely deduplicated, moving the offset into the data object just past where the data object has already been deduplicated, wherein retrieving the offset into the data object comprises: retrieving the offset from a last entry of a database, the last entry corresponding to an un-deduplicated portion of the data object; and, deleting the last entry of the database, wherein moving the offset into the data object just past where the data object has already been deduplicated comprises: adding a new last entry to the database, the new last entry corresponding to the un-deduplicated portion of the data object and referencing a position of the un-deduplicated portion within the data object, and wherein the position of the un-deduplicated portion within the data object corresponds to the offset.