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.