1. A method for storing copies of databases in a database storage system, the method comprising: maintaining, by the database storage system, a plurality of copies of a source database on a storage system, each copy including a plurality of database blocks, wherein a database block is a unit of data used by a database, wherein a portion of the database block stores metadata associated with the database block, wherein one or more database blocks are associated with at least two copies of the source database stored on the database storage system, the maintaining comprising, iteratively: receiving, by the database storage system, from a backup server maintaining backups of the source database, a full backup of the source database; restoring the full backup of the source database to obtain a first copy of the source database; creating, by the database storage system, one or more intermediate copies of the source database, comprising: receiving transaction logs from the backup server; and creating an intermediate copy by updating the first copy or a previously created intermediate copy of the source database by applying the received transaction logs; determining whether a recent copy of the source database can be successfully updated using transaction logs received from the backup server; responsive to detecting a failure in updating the recent copy using the received transaction logs, receiving, from the backup server, another full backup of the source database; restoring the other full backup of the source database to obtain a plurality of database blocks; and determining, by the database storage system, a subset of the plurality of database blocks, the determining comprising, excluding database blocks that match corresponding database blocks of a previously stored copy of the source database; storing the determined subset of database blocks as a new copy of the source database.