IP Library › Granted Patent US 7,055,008
Granted Patent B2
US 7,055,008 · App. 10/348,834 · Granted May 30, 2006

System and method for backing up data

Assignee: FalconStor Software, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,055,008
App. No.
10/348,834
Granted
May 30, 2006
Kind
B2
Abstract

A hash-optimized backup system and method takes data blocks and generates a probabilistically unique digital fingerprint of the content of each data block using a substantially collision-free algorithm. The process compares the generated fingerprint to a database of stored fingerprints and, if the generated fingerprint matches a stored fingerprint, the data block is determined to already have been backed up, and therefore does not need to be backed up again. Only if the generated fingerprint does not match a stored fingerprint is the data block backed up, at which point the generated fingerprint is added to the database of stored fingerprints. Because the algorithm is substantially collision-free, there is no need to compare actual data content if there is a hash-value match. The process can also be used to audit software license compliance, inventory software, and detect computer-file tampering such as viruses and malware.

Claims (78)

1. A method for backing up data, the method comprising:

generating a first digital fingerprint representing a first data block stored at a first location in a first memory device;

comparing the first digital fingerprint to one or more values stored in a database;

if the first digital fingerprint does not match any of the values stored in the database:

storing a copy of the first data block in a second memory device separate from the first memory device;

storing the first digital fingerprint in the database;

and storing the first location in the database in association with the first digital fingerprint;

generating a second digital fingerprint representing a second data block stored at a second location in a third memory device;

comparing the second digital fingerprint to the one or more values stored in the database; and

if the second digital fingerprint matches one of the one or more values stored in the database, storing the second location in the database in association with the one value.

2. The method according to claim 1 , wherein the first memory device and the third memory device are in the same computer.

3. The method according to claim 1 , comprising:

generating the first digital fingerprint using a substantially collision-free algorithm.

4. The method according to claim 3 , wherein the algorithm comprises a hash function.

5. The method according to claim 4 , wherein the hash function comprises a message digest 5 (MD5) algorithm.

6. The method according to claim 4 , wherein the hash function comprises a secure hash algorithm.

7. The method according to claim 3 , comprising:

generating the second digital fingerprint using a substantially collision-free algorithm.

8. The method according to claim 1 , comprising:

generating the second digital fingerprint using a substantially collision-free algorithm.

9. The method according to claim 8 , wherein the algorithm comprises a hash function.

10. The method according to claim 9 , wherein the hash function comprises a message digest 5 (MD5) algorithm.

11. The method according to claim 9 , wherein the hash function comprises a secure hash algorithm.

12. The method according to claim 1 , further comprising:

transmitting the copy of the first data block to the second memory device via a storage area network (SAN).

13. The method according to claim 1 , further comprising:

transmitting the copy of the first data block to the second memory device via a large area network (LAN).

14. The method according to claim 1 , further comprising:

transmitting the copy of the first data block to the second memory device via an internet.

15. The method according to claim 1 , further comprising:

selecting a file stored in the first memory device; and

defining one or more data blocks associated with the stored file.

16. The method according to claim 15 , wherein the file is associated with a software package used to verify that an enterprise is in compliance with selected licensing requirements.

17. An apparatus for backing up data, the apparatus comprising:

means for generating a first digital fingerprint representing a first data block stored at a first location in a first memory device;

means for comparing the first digital fingerprint to one or more values stored in a database;

means for storing a copy of the first data block in a second memory device separate from the first memory device, for storing the first digital fingerprint in the database, and for storing the first location in the database in association with the first digital fingerprint, if the first digital fingerprint does not match any of the values stored in the database;

means for generating a second digital fingerprint representing a second data block stored at a second location in a third memory device;

means for comparing the second digital fingerprint to the one or more values stored in the database; and

means for storing the second location in the database in association with the one value, if the second digital fingerprint matches one of the one or more values stored in the database.

18. A system for backing up data, the system comprising:

a first memory device configured to store data;

a second memory device configured to store data;

a third memory device configured to store data;

a database configured to store one or more digital fingerprints; and

a processor configured to:

generate a first digital fingerprint representing a first data block stored at a first location in the first memory device;

compare the first digital fingerprint to one or more values stored in the database;

if the first digital fingerprint does not match any of the values stored in the database:

store a copy of the first data block in the second memory device separate from the first memory device;

store the first digital fingerprint in the database; and

store the first location in the database in association with the first digital fingerprint;

generate a second digital fingerprint representing a second data block stored at a second location in the third memory device;

compare the second digital fingerprint to the one or more values stored in the database; and

store the second location in the database in association with the one value, if the second digital fingerprint matches one of the one or more values stored in the database.

19. The system according to claim 18 , wherein the first memory device and the third memory device are the same.

20. The system according to claim 18 , wherein the processor is further configured to:

generate the first digital fingerprint using a substantially collision-free algorithm.

21. The system according to claim 20 , wherein the algorithm comprises a hash function.

22. The system according to claim 21 , wherein the hash function comprises a message digest 5 (MD5) algorithm.

23. The system according to claim 21 , wherein the hash function comprises a secure hash algorithm.

24. The system according to claim 20 , wherein the processor is further configured to:

generate the second digital fingerprint using a substantially collision-free algorithm.

25. The system according to claim 18 , wherein the processor is further configured to:

generate the second digital fingerprint using a substantially collision-free algorithm.

26. The system according to claim 25 , wherein the algorithm comprises a hash function.

27. The system according to claim 26 , wherein the hash function comprises a message digest 5 (MD5) algorithm.

28. The system according to claim 26 , wherein the hash function comprises a secure hash algorithm.

29. The system according to claim 18 , wherein the processor is further configured to:

transmit the copy of the first data block to the second memory device via a storage area network (SAN).

30. The system according to claim 18 , wherein the processor is further configured to:

transmit the copy of the first data block to the second memory device via a large area network (LAN).

31. The system according to claim 18 , wherein the processor is further configured to:

transmit the copy of the first data block to the second memory device via an internet.

32. The system according to claim 18 , wherein the processor is further configured to:

select a file stored in the first memory device; and

define one or more data blocks associated with the stored file.

33. The system according to claim 32 , wherein the file is associated with a software package used to verify that an enterprise is in compliance with selected licensing requirements.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE BOX 2: NAME OF ASSIGNEE PREVIOUSLY RECORDED ON REEL 013695 FRAME 0964. ASSIGNOR(S) HEREBY CONFIRMS THE NAME CHANGE FROM FALCONSTOR SOFTWARE, INC. TO FALCONSTOR, INC.. Recorded Sep 20, 2007
From: LAM, WAI T.
To: FALCONSTOR, INC.
Reel/Frame 019852/0399 →
CORRECTIVE ASSIGNMENT TO CORRECT THE BOX 2: NAME OF ASSIGNEE PREVIOUSLY RECORDED ON REEL 013695 FRAME 0970. ASSIGNOR(S) HEREBY CONFIRMS THE CORRECTION OF NAME FROM FALCONSTOR SOFTWARE, INC. TO FALCONSTOR, INC.. Recorded Sep 20, 2007
From: NILES, RONALD S.
To: FALCONSTOR, INC.
Reel/Frame 019852/0496 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2003
From: LAM, WAI T.
To: FALCONSTOR SOFTWARE, INC.
Reel/Frame 013695/0964 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 22, 2003
From: NILES, RONALD S.
To: FALCONSTOR SOFTWARE, INC
Reel/Frame 013695/0970 →
Continuity (1)
Related Publication 20040143713A1 · Jul 22, 2004