# US 2004/0143713 A1 · System and method for backing up data

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2004/0143713 A1
- Document ID: US20040143713A1
- Status: Published application
- Kind: A1
- Application number: 10/348,834
- Filed: 2003-01-22
- Published: 2004-07-22
- Earliest claimed: 2003-01-22
- Assignees: FalconStor Software, Inc.
- Inventors: Ronald S. Niles; Wai Lam
- Web page: https://patentgrep.com/patent/US20040143713A1

## CPC

- G06F 16/137: {Hash-based (content-based indexing of textual data G06F16/31)}
- G02B 7/102: {controlled by a microcomputer (cameras with interchangeable lenses G03B17/14)}
- G02B 15/04: by changing a part
- G02B 26/004: {based on a displacement or a deformation of a fluid}
- G02B 27/646: {compensating for small deviations, e.g. due to vibration or shake (movement of one or more optical elements for control of motion blur in cameras, projectors or printers G03B2205/0007; image stabilisation in cameras peculiar to the presence or use of an electronic image sensor H04N23/68)}
- G03B 3/10: Power-operated focusing
- G03B 5/00: Adjustment of optical system relative to image or object surface other than for focusing
- G03B 17/17: with reflectors arranged in beam forming the photographic image, e.g. for reducing dimensions of camera
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1453: {using de-duplication of the data}
- G06F 11/1464: {for networked environments}
- G06F 16/11: File system administration, e.g. details of archiving or snapshots (error detection or correction of the data by redundancy in operations G06F11/14)
- G06F 16/951: Indexing; Web crawling techniques
- G06F 21/56: Computer malware detection or handling, e.g. anti-virus arrangements
- G06F 21/564: {by virus signature recognition}
- G06Q 10/087: Inventory or stock management, e.g. order filling, procurement or balancing against orders
- G06Q 20/4012: {Verifying personal identification numbers [PIN]}
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 63/123: {received data contents, e.g. message integrity}
- H04L 63/145: {the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms}
- G03B 2205/0046: Movement of one or more optical elements for zooming
- G03B 2205/0069: using electromagnetic actuators, e.g. voice coils
- Y10S 707/99953: Recoverability
- Y10S 707/99955: Archiving or backup
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G02B: OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G03B: APPARATUS OR ARRANGEMENTS FOR TAKING PHOTOGRAPHS OR FOR PROJECTING OR VIEWING THEM; APPARATUS OR ARRANGEMENTS EMPLOYING ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ACCESSORIES THEREFOR (optical parts of such apparatus G02B; photosensitive materials or processes for photographic purposes G03C; apparatus for processing exposed photographic materials G03D)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## 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

### Claim 1

A method for backing up a data block having a data block location, the method comprising:
generating a digital fingerprint for the data block using a substantially collision-free algorithm;
comparing the digital fingerprint to digital fingerprints stored in a database; and
if the digital fingerprint does not match one of the stored digital fingerprints, backing up the data block and adding to the database the digital fingerprint and the data block location.

### Claim 2 (depends on 1)

The method according to claim 1, wherein if the digital fingerprint matches one of the stored digital fingerprints, updating the database to associate the digital fingerprint with the data block location.

### Claim 3 (depends on 2)

The method according to claim 2, wherein the algorithm is a hash function.

### Claim 4 (depends on 3)

The method according to claim 3, wherein the hash function is MD5 or SHA-1.

### Claim 5

A system for backing up a data block comprising:
a backup server having access to a digital fingerprint database; and
a source computer connected to the backup server via a communication path,
wherein the source computer generates a digital fingerprint of the data block using a substantially collision-free algorithm, and the backup server backs up the data block if the digital fingerprint does not match any digital fingerprint stored in the database.

### Claim 6 (depends on 5)

The system according to claim 5, wherein the data block has a location on the source computer and the backup server adds to the database the digital fingerprint and the data block location.

### Claim 7 (depends on 5)

The system according to claim 5, wherein the data block has a location on the source computer and if the digital fingerprint matches a digital fingerprint stored in the database, the backup server updates the database to associate the digital fingerprint with the data block location.

### Claim 8 (depends on 5)

The system according to claim 5, further comprising a storage device connected to the backup server for storing the database.

### Claim 9 (depends on 5)

The system according to claim 5, further comprising a storage device connected to the backup server for storing the backed-up data blocks.

### Claim 10 (depends on 5)

The system according to claim 5, wherein the communication path is a network.

### Claim 11 (depends on 10)

The system according to claim 10, wherein the network is a local area network.

### Claim 12 (depends on 10)

The system according to claim 10, wherein the network is a wide area network.

### Claim 13 (depends on 10)

The system according to claim 10, wherein the network is the Internet.

### Claim 14

A method for auditing license restrictions of a computer program in an enterprise computing environment, comprising:
generating a digital fingerprint of at least one file in the computer program using a substantially collision-free algorithm;
generating a digital fingerprint for each file on each computer in the enterprise using the substantially collision-free algorithm;
comparing the digital fingerprints from the enterprise files with the digital fingerprint of the computer program file; and
comparing the number of fingerprint matches to the number of licenses allowed for the computer program.

### Claim 15 (depends on 14)

The method according to claim 14, further comprising dividing the file into data blocks and generating a digital fingerprint of at least one data block.

### Claim 16

A method for inventorying a computer program in an enterprise computing environment, comprising:
generating a digital fingerprint of at least one file in the computer program using a substantially collision-free algorithm;
generating a digital fingerprint for each file on each computer in the enterprise using the substantially collision-free algorithm;
comparing the digital fingerprints from the enterprise files with the digital fingerprint of the computer program file; and
counting the number of fingerprint matches.

### Claim 17 (depends on 16)

The method according to claim 16, further comprising dividing each file into data blocks and generating a digital fingerprint of at least one data block.

### Claim 18

A method for detecting file tampering on a computer, comprising:
generating a digital fingerprint for each file on the computer using a substantially collision-free algorithm; and
comparing the digital fingerprints of the computer files with digital fingerprints of the computer files generated when the files were previously saved,
wherein tampering exists on a file if the digital fingerprint of that file differs from the digital fingerprint generated when that file was previously saved.

### Claim 19 (depends on 18)

The method according to claim 18, further comprising dividing each file into data blocks and generating a digital fingerprint of at least one data block.

### Claim 20 (depends on 18)

The method according to claim 18, wherein the file tampering comprises a computer virus.

### Claim 21

A method for detecting a computer virus on a computer, comprising:
generating a digital fingerprint of the computer virus using a substantially collision-free algorithm;
generating a digital fingerprint for each file on the computer using the substantially collision-free algorithm; and
comparing the digital fingerprints of the computer files with the digital fingerprint of the computer virus,
wherein the computer virus exists on the computer if any digital fingerprint of the computer files matches the digital fingerprint of the computer virus.

### Claim 22 (depends on 21)

The method according to claim 21, further comprising dividing each file into data blocks and generating a digital fingerprint of at least one data block.
