1. A method for transmitting a snapshot from a source system to a target system, the method comprising: storing, in a source storage system, a plurality of snapshots, wherein a snapshot shares data blocks with one or more other snapshots stored in the source storage system; maintaining parent-child relationships between snapshots if a child snapshot is created from a parent snapshot, wherein at least a parent snapshot has a parent child relationship with two or more child snapshots created from the parent snapshot, such that each child snapshot can be modified independent of the other child snapshots; transmitting data of a first snapshot from the source storage system to a target storage system; identifying a second snapshot to transmit from the source storage system to a target storage system, wherein the first snapshot and the second snapshot have a common ancestor snapshot such that both the first snapshot and the second snapshot are descendants of the common ancestor snapshot based on parent child relationships; identifying data blocks of the second snapshot that are distinct from the first snapshot; and transmitting the identified data blocks of the second snapshot to the target storage system.