The flow of data that the backend handles.
Publish the snapshot in dst.
Execute a command on the host that is the destination of the snapshots.
Remove discarded snapshots.
Restore dst to src.
Sync from src to dst.
Update layout of the snapshots at the destination.
Error handling is via exceptions.